【问题标题】:Surrounding results of a Find command with quotes用引号括住 Find 命令的结果
【发布时间】:2013-08-12 09:41:25
【问题描述】:

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

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

任何帮助将不胜感激。

【问题讨论】:

  • 您目前正在使用tr 命令删除换行符

标签: linux shell scripting


【解决方案1】:

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

例如,

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

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

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

【讨论】:

  • 这对我有用-printf '\"%f\"',我现在可以摆脱管道
猜你喜欢
  • 2010-09-09
  • 2012-06-28
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-28
相关资源
最近更新 更多