2015-07-10 64 views
0

是否可以根据他们的字数,如下面的目录重命名一批文件:重命名基于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"

+0

所以你想用正确的字数来替换文件名的最后部分('_'和'.NEW'之间)?或者只将该数字追加到文件名中? – Marki555

+0

是的,我试图用_字数替换_和.NEW之间的最后部分 – Booboo

回答

2
for f in $folder1/*; do 
    cnt=$(wc -l $f) 
    printf -v num "%07u" ${cnt% *} 
    mv $f ${f%_*}_$num.NEW 
done 

(用于测试你可以把echomv之前,这样就不会发生破坏。)

首先,我们分配wc命令的输出为可变$cnt(例如567 AMS_01_ex345_2012040000000_00.NEW)。然后我们只需要从中得到数字并用前导零格式化这个数字。 printf -v num将结果分配给该变量。

${parameter%word}在bash中会删除匹配的后缀模式。在我们的第一个案例中,我们将从$cnt中删除最后一个空格及其后的所有内容。在我们的第二种情况下,将从$f中删除最后一个下划线及其后的所有内容。

编辑:这是计数行,而不是词。在问题本身中,我很困惑于使用wc -l。要计算单词,请使用wc -w