다음과 같은 상황이 있다고 가정해 보겠습니다.
$ find ./src -name '*.txt'
./src/file1.txt
./src/subdir1/file2.txt
./src/subdir1/subsubdir1/file3.txt
./src/subdir2/file4.txt
검색 중인 디렉토리를 제외하고 싶습니다. 다음과 같습니다.
./file1.txt
./src/file1.txt
./subdir1/file2.txt
기다리는 대신 ./src/subdir1/file2.txt
.
추가해도 -mindepth 1
효과가 없습니다.
내가 원하는 것을 순전히 할 수 있습니까 find
?
답변1
find
지원되는 버전이 없는 경우 이 -printf '%P'
대체 구성을 사용하여 검색 경로를 포함하지 않을 수 있습니다.
문제의 시작점:
find ./src -name '*.txt'
동일하지만 결과에 검색 경로가 없습니다.
( cd ./src && find . -name '*.txt' )
귀하의 질문에 표시된 파일 구조를 가정하면 결과는 다음과 같습니다.
./file1.txt
./subdir1/file2.txt
./subdir1/subsubdir1/file3.txt
./subdir2/file4.txt
답변2
연장 대상@steeldriver 님이 말씀하셨습니다.:
$ cd "$(mktemp --directory)" # create temporary directory
direnv: unloading
$ mkdir foo bar
$ touch foo/1 bar/2
$ find foo bar -type f -name '*' -printf '%P\n'
1
2
GNU 매뉴얼은 %P
형식 문자열을 다음과 같이 기록합니다 find
.
%P
파일 이름과 파일이 발견된 원본 이름이 제거되었습니다.
여기서 "파일명"은 단순히 파일명이 아닌 발견된 파일의 경로명을 의미합니다.