Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用find命令在shell中打印带空格的完整文件名_Shell_Scripting_Find_Filenames_Spaces - Fatal编程技术网

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

使用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命令,它将打印给定目录中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”

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列出了更多的值,我不需要所有这些。