使用find命令在shell中打印带空格的完整文件名

时间:2014-08-01 06:34:26

标签: shell scripting find filenames spaces

我有一个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',

但问题仍然存在。

非常感谢任何帮助。

谢谢!

1 个答案:

答案 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