我需要一个bash脚本,它以下列方式递归列出目录中的文件:
filename,size (in kb),numeric value (in filename)
e.g:
/directory/1/file-100.txt,50,100
/directory/1/file-200.txt,45,200
/directory/2/file-100.txt,20,100
/directory/2/file-500.txt,100,500
另外,我需要它忽略以“.svn
”
答案 0 :(得分:5)
尝试一下:
find -name ".svn" -prune -o -type f -printf "%p,%k,\n" | sed 's/\([^-]\+-\([0-9]\+\)\..*\)/\1\2/'
只使用了两个实用程序(可能需要GNU版本)。
答案 1 :(得分:2)
也许不是最好的方式,但应该有效:
find /path -type f | grep -v '.svn' | xargs du -k |\
awk '{print $2","$1}' | sed 's/-\([0-9]*\)\(\..*\)/-\1\2,\1/'
答案 2 :(得分:0)
功能强>
对解决方案的建议:
$ find . -path '*/.svn' -prune -o -type f -printf '%p %k\n' |\
awk -v OFS=, '{ print $1, $2, gensub(/[^0-9]*([0-9]*)/, "\\1", "g", $1) }'
<强>找到选项:强>
<强> AWK:强>
编辑:根据Dennis的建议更新。不敢相信我实际上错过了%k,我责备凌晨3点。