是否可以根据文件的字数重命名目录中的一组文件,例如:
对于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"

最佳答案

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}在bash中将删除匹配的后缀模式。在我们的第一个例子中,我们将从$cnt中删除最后一个空间及其之后的所有内容。在我们的第二种情况下,将从$f中删除最后一个下划线及其后的所有内容。
编辑:这计算的是行,而不是词。我被问题本身中的wc -l用法弄糊涂了。要计算单词数,请使用wc -w

关于linux - 根据字数重命名文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31337992/

10-10 03:24