4

所以我使用以下命令来获取文件列表,其目录用引号括起来

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 命令不会为每个结果创建换行符。

任何帮助,将不胜感激。

4

1 回答 1

6

命令末尾的反引号find表示您正在将命令输出重定向到变量。正如hex2mgl所评论的那样,您正在删除带有tr. 即使您没有将结果传递给tr,除非引用,否则您的变量也可能不会显示换行符。

例如,

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

将存储find变量中引用的路径名的结果foo

echo ${foo}不会显示换行符,而echo "${foo}"会。

于 2013-08-12T09:52:37.260 回答