我正在尝试删除第二个下划线后的文件名,并获得唯一的文件。我看到了许多答案,并形成了一个脚本。此脚本在执行cut命令之前运行良好,但无法提供唯一的文件名。我尝试了以下命令,但没有得到所需的输出。
使用的脚本:
for filename in ${path/to/files}/*.gz;
do
fname=$(basename ${filename} | cut -f 1-2 -d "_" | sort | uniq)
echo "${fname}"
done
文件示例:
- 文件名1_00_1.gz
- 文件名1_00_2.gz
- 文件名2_00_1.gz
- 文件名2_00_2.gz
所需输出:
- 文件名1_00
- 文件名2_00
这么说。如何获得所需输出格式的唯一文件列表?提前非常感谢。
打印完文件后应用uniq
和sort
(最好先识别uniques,然后再排序(:
for filename in ${path/to/files}/*.gz;
do
fname=$(basename ${filename} | cut -f 1-2 -d "_" );
echo "${fname}";
done | uniq | sort
或者只做
for filename in ${path/to/files}/*.gz; do echo ${filename%_*.gz}; done | uniq | sort
for f in *.gz; do echo ${f%_*.gz}; done | sort | uniq