폴더 목록이 있고 각 폴더에는 모든 폴더에서 동일한 이름을 가진 "file.txt" 파일이 있습니다. 모든 폴더에서 이 파일의 경로를 수집하여 텍스트 파일로 저장하고 싶습니다. 이를 위해 상위 폴더에서 다음 명령을 실행했습니다.
find $PWD -type f -name "file.txt" > paths.txt
이 명령은 다음과 같이 "path.txt" 파일의 모든 폴더에 있는 파일에 대한 모든 경로를 저장합니다.
a/b/c/1/file.txt
a/b/c/2/file.txt
a/b/c/3/file.txt
a/b/c/4/file.txt
a/b/c/5/file.txt
a/b/c/6/file.txt
a/b/c/7/file.txt
.
.
.
.
"path.txt" 파일의 줄 사이에 공백을 만들어 다음과 같이 표시하려면 어떻게 해야 합니까?
/a/b/c/1/file.txt /a/b/c/2/file.txt /a/b/c/3/file.txt /a/b/c/4/file.txt /a/b/c/5/file.txt /a/b/c/6/file.txt /a/b/c/7/file.txt ...
답변1
또 다른 방법은 find(1)
재미로 GNU를 가정하는 것입니다.
find $PWD -type f -name "file.txt" -printf '%p '
답변2
"tr" 명령을 사용하여 LF 문자를 공백으로 바꿀 수 있습니다.
tr '\012' ' ' < path.txt
이는 원래 명령의 일부일 수 있습니다.
find $PWD -type f -name "file.txt" | tr '\012' ' ' > paths.txt
답변3
간단한 방법은 find
출력을 파이프 하는 것입니다 xargs
(명시적인 명령이 제공되지 않을 때 기본 동작은 해당 인수를 에코하는 것입니다).
find $PWD -type f -name "file.txt" | xargs > paths.txt
단순히 모든 줄 바꿈을 공백으로 바꾸는 대신 최종 줄 바꿈을 유지합니다.
답변4
paste
당신은 또한 사용할 수 있습니다,
find . -type f -name "path.txt" -exec paste -d' ' -s {} \; > path.txt