파일 경로 사이에 공백 추가

파일 경로 사이에 공백 추가

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

관련 정보