使用find命令在shell中打印带空格的完整文件名
我有一个find命令,它将打印给定目录中20个最大文件的大小和文件名(以及完整路径),并将其写入一个文件:使用find命令在shell中打印带空格的完整文件名,shell,scripting,find,filenames,spaces,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 问题是,存在一些文件名中带有空格的文件。这些文件名只打印到第一个空格 示例:名为“hello there.txt”的文件打印为“hello” 我尝试将IFS设置为“\n”
find ${DIR} -type f -size +1M -exec du -h '{}' + | sort -hr|awk '{print $1","$2}'|head -20 >>files.csv
问题是,存在一些文件名中带有空格的文件。这些文件名只打印到第一个空格
示例:名为“hello there.txt”的文件打印为“hello”
我尝试将IFS设置为“\n”
i.e. IFS=$'\n',
但问题依然存在
任何帮助都将不胜感激
谢谢 在
awk
中,打印$1“,“$2
打印以逗号分隔的前两个字段。问题是hello there.txt
中的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
非常感谢你的回复。awk实际上选择了所需的两列,并在它们之间添加了一个逗号,因为ls列出了更多的值,我不需要所有这些。