파일 경로 사이에 공백 추가

파일 경로 사이에 공백 추가

폴더 목록이 있고 모든 폴더 안에는 모든 폴더에 동일한 이름을 가진 "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

관련 정보