是否可以根据字数重命名目录中的一堆文件,如下所示:
对于folderA
中的所有文件,获取字数,然后根据字数重命名
所以AMS_01_ex345_2012040000000_0001235.NEW
,此文件的字数为 1234 ,它将重命名为AMS_01_ex345_2012040000000_0001234.NEW
for x in $folder1 do exec grep -v "\"" $x | 'wc -l' > "$x.NEW"
答案 0 :(得分:2)
for f in $folder1/*; do
cnt=$(wc -l $f)
printf -v num "%07u" ${cnt% *}
mv $f ${f%_*}_$num.NEW
done
(对于测试,您可以将echo
放在mv
之前,这样就不会发生破坏。)
首先,我们将wc
命令的输出分配给变量$cnt
(例如567 AMS_01_ex345_2012040000000_0001235.NEW
)。然后我们需要只获取它的数字并用前导零格式化这个数字。 printf -v num
将结果分配给该变量。
${parameter%word}
将删除匹配的后缀模式。在我们的第一个案例中,我们将从$cnt
中删除最后一个空格及其后的所有内容。在我们的第二种情况下,将从$f
删除最后一个下划线及其后的所有内容。
编辑:这会计算行数,而非单词。我对问题本身中wc -l
的使用感到困惑。要计算单词,请使用wc -w
。