我有一个单行查找命令,它递归地检查并打印出在特定时间范围内创建的特定文件类型的大小、所有者和名称。但在结果中,给出文件名列,直到目录或文件名中的第一个空格字符为止。 有没有想法可以在这个命令中解决这个问题,而无需在 bash 中编写任何循环?谢谢!
这是命令:
find /path/to/dist -type f -iname "*.png" -newermt 2015-01-01 ! -newermt 2016-12-31 -ls | sort -k5 | sort -k5 | awk '{print $5"\t"$7"\t"$11}'
最佳答案
尝试将 awk
命令更改为:
awk '{$1=$2=$3=$4=$6=$8=$9=$10="" ; print$11}'
这样整个命令就变成这样了:
find /path/to/dist -type f -iname "*.png" -newermt 2015-01-01 ! -newermt 2016-12-31 -ls | sort -k5 | awk '{$1=$2=$3=$4=$6=$8=$9=$10="" ; print$0}'
这会在行首留下一些额外的空格,希望它能满足您的目的。
我已经删除了 sort
的第二个实例,因为它与第一个实例使用相同的键进行排序,这似乎不会执行任何操作。
关于bash - 如何告诉 find 命令转义文件名中的空格字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42483587/