使用find
它来查找具有特定模式的所有文件很简单:
find . -name \*.jar
如何将该命令的结果(例如所有文件名)合并到一个由 分隔的字符串中:
?
预期结果将类似于:
"./foo.jar:./bar.jar"
预先感谢您的考虑和回复。
答案1
find . -name \*.jar -printf '%P:'
答案2
find . -name \*.jar | tr '\n' ':'
答案3
find . -name '*.jar' | paste -sd : -
但如果文件或目录名包含换行符,则该方法将无法正常工作。
要解决这个问题,在 GNU 系统上,您可以使用:
find . -name '*.jar' -print0 | paste -zsd: | tr '\0' '\n'
当然,如果您的文件或目录名包含:
字符,则您无能为力,尽管您可以告诉find
跳过它们:
LC_ALL=C find . -name '*:*' -prune -o -name '*.jar' -print0 |
paste -zsd: | tr '\0' '\n'
和zsh
:
set -o extendedglob # best in ~/.zshrc
jar_files=(**/*.jar~*:*(ND))
printf '%s\n' ${(j/:/)jar_files}