이를 사용하여 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}