Ana*_*Ana 26 unix bash find xargs
我想以下面的方式输出文件夹中的项目列表:
"filename1" "filename2" "file name with spaces" "foldername" "folder name with spaces"
Run Code Online (Sandbox Code Playgroud)
换句话说,项目名称必须在一行中,用引号(单引号或双引号)括起并用空格分隔.
我知道
find . | xargs echo
Run Code Online (Sandbox Code Playgroud)
打印输出在一行,但我不知道如何在每个项目名称周围添加引号.
此代码是bsh脚本的一部分.因此,解决方案可以是一组命令,并使用临时文件来存储中间输出.
非常感谢您的任何建议.
干杯,安娜
Ben*_* A. 34
您也可以使用find"-printf",如下所示:
find . -printf "\"%p\" " | xargs your_command
Run Code Online (Sandbox Code Playgroud)
哪里:
%p = file-path
Run Code Online (Sandbox Code Playgroud)
这将用引号括住每个找到的文件,并用空格分隔每个项目.这避免了使用多个命令.
fre*_*ker 24
这应该工作
find $PWD | sed 's/^/"/g' | sed 's/$/"/g' | tr '\n' ' '
Run Code Online (Sandbox Code Playgroud)
编辑:
这应该比前一个更有效.
find $PWD | sed -e 's/^/"/g' -e 's/$/"/g' | tr '\n' ' '
Run Code Online (Sandbox Code Playgroud)
@Timofey的解决方案最终将与tr一起使用,并且应该是最有效的.
find $PWD -exec echo -n '"{}" ' \; | tr '\n' ' '
Run Code Online (Sandbox Code Playgroud)
Geo*_*ard 17
您可以使用GNU ls选项--quoting-style轻松获得所需内容.从手册页:
--quoting-style=WORD使用引用样式
WORD的条目名称:literal,locale,shell,shell-always,shell-escape,shell-escape-always,c,escape
例如,使用该命令ls --quoting-style=shell-escape-always,您的输出变为:
'filename1' 'filename2' 'file name with spaces' 'foldername' 'folder name with spaces'
Run Code Online (Sandbox Code Playgroud)
使用--quoting-style=c,您可以完全重现您想要的示例.但是,如果输出将由shell脚本使用,则应使用正确转义特殊字符的表单之一,例如shell-escape-always.
Tim*_*bov 15
试试这个.
find . -exec echo -n '"{}" ' \;
Run Code Online (Sandbox Code Playgroud)
Mic*_*hen 10
10 年过去了,没有人建议使用 Bash“|while read”方法吗?
find * -type d -depth 0|while read f; do echo \"$f\"; done
Run Code Online (Sandbox Code Playgroud)
它是一个简单的 Bash shell 管道,而不是启动另一个程序(如 sed 或 xarg)。如果您确实想对每个文件/文件夹执行某些操作:
find * -type d -depth 0|while read f; do du -sh "$f"; done
Run Code Online (Sandbox Code Playgroud)
顺便说一下,find *使用另一个 Bash 功能排除 .xyz 文件/文件夹,并且不会输出./前缀find .。
for f in *; do printf "'%s' " "$f"; done; echo
Run Code Online (Sandbox Code Playgroud)
或者,感谢戈登·戴维森:
printf "'%s' " *; echo
Run Code Online (Sandbox Code Playgroud)
尾随echo只是在输出中添加换行符。