是否可以根据他们的字数,如下面的目录重命名一批文件:重命名基于Word文件数
对于所有的文件folderA
,得到他们的字数,然后将其重命名根据他们的字数
所以AMS_01_ex345_2012040000000_00.NEW
,字计数这个文件是,它会被重新命名为AMS_01_ex345_2012040000000_00.NEW
for x in $folder1 do exec grep -v "\"" $x | 'wc -l' > "$x.NEW"
是否可以根据他们的字数,如下面的目录重命名一批文件:重命名基于Word文件数
对于所有的文件folderA
,得到他们的字数,然后将其重命名根据他们的字数
所以AMS_01_ex345_2012040000000_00.NEW
,字计数这个文件是,它会被重新命名为AMS_01_ex345_2012040000000_00.NEW
for x in $folder1 do exec grep -v "\"" $x | 'wc -l' > "$x.NEW"
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_00.NEW
)。然后我们只需要从中得到数字并用前导零格式化这个数字。 printf -v num
将结果分配给该变量。
${parameter%word}
在bash中会删除匹配的后缀模式。在我们的第一个案例中,我们将从$cnt
中删除最后一个空格及其后的所有内容。在我们的第二种情况下,将从$f
中删除最后一个下划线及其后的所有内容。
编辑:这是计数行,而不是词。在问题本身中,我很困惑于使用wc -l
。要计算单词,请使用wc -w
。
所以你想用正确的字数来替换文件名的最后部分('_'和'.NEW'之间)?或者只将该数字追加到文件名中? – Marki555
是的,我试图用_字数替换_和.NEW之间的最后部分 – Booboo