And*_*all 4 bash shell awk file-rename wc
标题说明了一切.我已经设法得到了这条线:
lines=$(wc file.txt | awk {'print $1'});
Run Code Online (Sandbox Code Playgroud)
但我可以使用辅助将其附加到文件名.奖励点用于向我展示如何在当前目录中的所有.txt文件上循环它.
find -name '*.txt' -execdir bash -c \
'mv -v "$0" "${0%.txt}_$(wc -l < "$0").txt"' {} \;
Run Code Online (Sandbox Code Playgroud)
哪里
bash为每个(\;)匹配的文件执行该命令;{}由当前处理的文件名替换,并作为第一个参数($0)传递给脚本;${0%.txt}.txt从字符串后面删除最短匹配(参见官方Bash脚本指南);wc -l < "$0"仅打印文件中的行数(例如,请参阅此问题的答案)样本输出:
'./file-a.txt' -> 'file-a_5.txt'
'./file with spaces.txt' -> 'file with spaces_8.txt'
Run Code Online (Sandbox Code Playgroud)