これを使用して、find
特定のパターンを持つすべてのファイルを見つけるのは簡単です。
find . -name \*.jar
このコマンドの結果(すべてのファイル名など)を1つの別々の文字列に結合するにはどうすればよいですか:
?
予想される結果は次のようになります。
"./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}