리눅스`find`로 파일 이름 만 얻는 방법?
디렉토리의 모든 파일에 find를 사용하고 있으므로 경로 목록을 얻습니다. 그러나 파일 이름 만 필요합니다. 즉 나는 얻고 ./dir1/dir2/file.txt
싶다file.txt
GNU에서는 find
다음 -printf
과 같은 매개 변수를 사용할 수 있습니다 .
find /dir1 -type f -printf "%f\n"
find에 -printf 옵션이 없으면 basename을 사용할 수도 있습니다.
find ./dir1 -type f -exec basename {} \;
다음 -execdir
과 같이 현재 파일을 자동으로 보유하는 다음 을 사용하십시오 {}
.
find . -type f -execdir echo '{}' ';'
$PWD
대신 사용할 수도 있습니다 .
(일부 시스템에서는 전면에 추가 점이 생성되지 않음).
여전히 추가 점이 있으면 다음을 실행할 수 있습니다.
find . -type f -execdir basename '{}' ';'
-execdir utility [argument ...] ;
-execdir
주는 동일-exec
유틸리티는 디렉토리에서 실행됩니다 것을 제외하고 주 현재 파일을 보유 .
사용하는 경우 +
대신 ;
다음 {}
유틸리티를 호출 할 때마다 가능한 한 많은 경로 이름으로 대체됩니다. 즉, 모든 파일 이름을 한 줄에 인쇄합니다.
GNU find를 사용하는 경우
find . -type f -printf "%f\n"
또는 Ruby (1.9+)와 같은 프로그래밍 언어를 사용할 수 있습니다
$ ruby -e 'Dir["**/*"].each{|x| puts File.basename(x)}'
bash (최소 4) 솔루션을 좋아한다면
shopt -s globstar
for file in **; do echo ${file##*/}; done
파일 이름에 대해서만 일부 작업을 실행하려면 사용하기 basename
가 어려울 수 있습니다.
예를 들면 다음과 같습니다.
find ~/clang+llvm-3.3/bin/ -type f -exec echo basename {} \;
basename 만 에코 /my/found/path
합니다. 파일 이름을 실행하려면 원하는 것이 아닙니다.
그러나 xargs
출력 할 수 있습니다 . 예를 들어 다른 디렉토리의 이름을 기반으로 디렉토리의 파일을 종료하려면 다음을 수행하십시오.
cd dirIwantToRMin;
find ~/clang+llvm-3.3/bin/ -type f -exec basename {} \; | xargs rm
Mac (BSD find
)에서는 다음을 사용하십시오.
find /dir1 -type f -exec basename {} \;
makandracards 페이지에서 최신 파일 이름을 제공하는 솔루션을 찾았습니다.
ls -1tr * | tail -1
(감사 Arne Hartherz에 간다)
나는 그것을 위해 사용했다 cp
:
cp $(ls -1tr * | tail -1) /tmp/
참고 URL : https://stackoverflow.com/questions/5456120/how-to-only-get-file-name-with-linux-find
'IT story' 카테고리의 다른 글
작은 따옴표와 큰 따옴표 ( 'vs ") (0) | 2020.04.10 |
---|---|
iOS 시뮬레이터를 시작할 때 Bluetooth 헤드폰 음악 품질이 저하됩니다 (0) | 2020.04.10 |
CSS를 통해 정렬 된 목록에서 두 번째 줄에 들여 쓰기를 유지하는 방법은 무엇입니까? (0) | 2020.04.10 |
Maven이 의존성을 target / lib에 복사하도록 강제 (0) | 2020.04.10 |
Angular의 HTTP 요청에 URL 인수 (쿼리 문자열)를 전달하는 방법은 무엇입니까? (0) | 2020.04.10 |