경로가없는 실행 파일 이름 찾기


9

실행 파일이 많은 폴더가 있고 find 명령 결과에서 경로를 생략하고 싶습니다. 이 명령은보고 싶은 파일을 보여 주지만 경로도 나열합니다. 파일 이름 만 원합니다.

find /opt/g09 -maxdepth 1 -executable

전체 경로가 아닌 파일 이름 만 표시하도록 find 출력을 어떻게 얻을 수 있습니까?

답변:


10

또는 사용하십시오 :

find /opt/g09 -maxdepth 1 -executable -printf "%f\n"

-type f플래그를 추가하면 여기에서도 작동합니다.

로부터 find수동 :

 %f     File's name with any leading directories removed (only the last element).

이 답변에는 GNU 만 있으면되고 find다른 프로그램에서는 결과를 조작하기 위해 다른 프로그램이 필요합니다.


-type f 내가 생각하려고했던 것! 코딩 맨 감사합니다!
j0h

@ j0h 문제 없습니다!
nixpower

6

사용 basename:

find /opt/g09 -maxdepth 1 -executable -exec basename {} \;

보낸 사람 man basename:

Print NAME with any leading directory components removed.

또한 find검색을 파일로만 제한하기 위해 모든 것을 시도하고 있습니다.

find /opt/g09 -type f -maxdepth 1 -executable -exec basename {} \;

3

나에게 가장 확실한 해결책은

(cd /opt/g09; find -maxdepth 1 -executable)

서브 쉘을 시작하기 때문에 동일한 디렉토리에 남아 있습니다. 이 방법의 장점은 구문 분석이 필요하지 않다는 것입니다. 단점은 서브 쉘을 시작한다는 것입니다 (그렇다고 느끼지는 않을 것입니다).


1
영리한 아이디어입니다.
AB

1

을 사용 awk하여 경로를 구분 기호로 나누고 /마지막 섹션 ( $NF)을 인쇄하십시오 .

find /opt/g09 -maxdepth 1 -executable | awk -F/ '{print $NF}'

파이썬 버전은 어디에 있습니까? ;)
Sergiy Kolodyazhnyy

@ Serg haha, 나는 손가락을
묶어야했다

1

의 조합을 사용 find하고perl

find /opt/g09 -maxdepth 1 -type f -executable | perl -pe 's/.+\/(.*)$/\1/'

펄을 배우는 좋은 방법 : P
nixpower
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.