Jes*_*ica 4 linux shell scripting
所以我使用以下命令获取文件列表,其目录用引号括起来
find /path -type f -mtime -100 -daystart -printf "%f\n" | sed 's/^/"/g' | sed 's/$/"/g' | tr '\n' ' '`
Run Code Online (Sandbox Code Playgroud)
但是现在我只想要那里的文件名所以我添加了
-printf "%f\n"
Run Code Online (Sandbox Code Playgroud)
给我
find /path -type f -mtime -100 -daystart -printf "%f\n" | sed 's/^/"/g' | sed 's/$/"/g' | tr '\n' ' '`
Run Code Online (Sandbox Code Playgroud)
但现在结果不再被引号括起来了.我认为printf命令不会为每个结果创建换行符.
任何帮助,将不胜感激.
命令末尾的反引号find表示您正在将命令输出重定向到变量.正如hex2mgl所评论的那样,你要删除换行符tr.即使您没有将结果输送到tr,除非引用,否则您的变量可能不会显示换行符.
例如,
foo=$(find . -type f -mtime -100 -daystart -printf '"%f"\n')
Run Code Online (Sandbox Code Playgroud)
将存储find变量中引用的路径名的结果foo.
这样做echo ${foo}不会显示换行符echo "${foo}".