带引号的Find命令的周围结果

时间:2013-08-12 09:41:25

标签: linux shell scripting

所以我使用以下命令获取包含引号的目录的文件列表

find /path -type f -mtime -100 -daystart -printf "%f\n" | sed 's/^/"/g' | sed 's/$/"/g' | tr '\n' ' '`

但是现在我只想要那里的文件名,所以我添加了

-printf "%f\n"

给我

find /path -type f -mtime -100 -daystart -printf "%f\n" | sed 's/^/"/g' | sed 's/$/"/g' | tr '\n' ' '`

但现在结果不再包含在引号中。我认为printf命令没有为每个结果创建换行符。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:5)

find命令末尾的反引号表示您正在将命令输出重定向到变量。正如hex2mgl所述,您正在使用tr删除换行符。即使您没有将结果汇总到tr,除非引用,否则您的变量可能不会显示换行符。

例如,

foo=$(find . -type f -mtime -100 -daystart -printf '"%f"\n')

会将find的结果与变量foo中引用的路径名存储起来。

执行echo ${foo}不会显示新行,而echo "${foo}"则会。