실행 파일이 많은 폴더가 있고 find 명령 결과에서 경로를 생략하고 싶습니다. 이 명령은보고 싶은 파일을 보여 주지만 경로도 나열합니다. 파일 이름 만 원합니다.
find /opt/g09 -maxdepth 1 -executable
전체 경로가 아닌 파일 이름 만 표시하도록 find 출력을 어떻게 얻을 수 있습니까?
답변
또는 사용하십시오 :
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
다른 프로그램에서는 결과를 조작하기 위해 다른 프로그램이 필요합니다.
답변
사용 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 {} \;
답변
나에게 가장 확실한 해결책은
(cd /opt/g09; find -maxdepth 1 -executable)
서브 쉘을 시작하기 때문에 동일한 디렉토리에 남아 있습니다. 이 방법의 장점은 구문 분석이 필요하지 않다는 것입니다. 단점은 서브 쉘을 시작한다는 것입니다 (그렇다고 느끼지는 않을 것입니다).
답변
을 사용 awk
하여 경로를 구분 기호로 나누고 /
마지막 섹션 ( $NF
)을 인쇄하십시오 .
find /opt/g09 -maxdepth 1 -executable | awk -F/ '{print $NF}'
답변
의 조합을 사용 find
하고perl
find /opt/g09 -maxdepth 1 -type f -executable | perl -pe 's/.+\/(.*)$/\1/'