我有一个find命令,它将打印给定目录中20个最大文件的大小和文件名(以及完整路径)并将其写入文件:
find ${DIR} -type f -size +1M -exec du -h '{}' + | sort -hr|awk '{print $1","$2}'|head -20 >>files.csv
问题是,存在一些文件名中包含空格的文件。这些文件名仅打印到第一个空格。
Ex:一个名为' hello there.txt'印刷为'你好'
我尝试将IFS设置为' \ n',
i.e. IFS=$'\n',
但问题仍然存在。
非常感谢任何帮助。
谢谢!
答案 0 :(得分:0)
在awk
中,print $1","$2
打印以逗号分隔的前两个字段。问题是there.txt
中的hello there.txt
位于第三列。
似乎awk
在这里做的唯一事情就是用逗号替换第一个标签。使用sed
:
$ find "${DIR}" -type f -size +1M -exec du -h '{}' + | sort -hr| sed 's/\t/,/' |head -20
4.0M,./path/hello there.txt