이것이 기본 동작입니다 ls
ls /net/nas/data/languages/pypm/sites/rex/free/2.6/*/pool/v/vi/virtual*1.4.4*pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/linux-x86/pool/v/vi/virtualenv-1.4.4_linux-x86_2.6_1.pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/linux-x86_64/pool/v/vi/virtualenv-1.4.4_linux-x86_64_2.6_1.pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/macosx/pool/v/vi/virtualenv-1.4.4_macosx_2.6_1.pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/win32-x86/pool/v/vi/virtualenv-1.4.4_win32-x86_2.6_1.pypm
ls
기본 이름 만 인쇄하려면 어떻게합니까 ? 처럼:
ls $OPTIONS /net/nas/data/languages/pypm/sites/rex/free/2.6/*/pool/v/vi/virtual*1.4.4*pypm
virtualenv-1.4.4_linux-x86_2.6_1.pypm
virtualenv-1.4.4_linux-x86_64_2.6_1.pypm
virtualenv-1.4.4_macosx_2.6_1.pypm
virtualenv-1.4.4_win32-x86_2.6_1.pypm
참고 : find
/ net / nas / data / languages / pypm / sites / rex / free로 사용하는 것보다 많은 파일과 디렉토리가 포함 된 쉘 글 로빙을 선호합니다 .
답변
반면 xargs -0
(같은 \ 0으로 구분 입력에 사용되도록 의도된다 find -print0
), ls
이러한 방식으로 출력을 분리하는 이러한 옵션이 없다.
하나,
ls -1 /path/glob | tr '\n' '\0' | xargs -0 -n 1 basename
길을 따라 개행을 null로 변환하는 트릭을 수행합니다. 그러면 xargs가 공백이있는 이름으로 작업 할 수 있습니다.
편집 : -n 1
xargs에 추가
답변
나는 이것을 사용한다 :
ls | tr '\n' '\n'
다음과 같은 목록을 제공합니다.
file1.mp3
file2.mp3
file3.mp3
...
답변
ls -1 <path> | sed 's#.*/##'
답변
awk
해결책:
ls -1 /path/glob | awk -F'/' '{print $NF}'
답변
ls [선택적 경로] | xargs -0 기본 이름
답변
GNU 기본 이름 과 FreeBSD 기본 이름은 모두 -a
여러 경로를 명령에 전달할 수 있는 인수를 허용합니다. 이것은 쉘 globbing과 함께 잘 작동합니다.
basename -a /path/glob*
답변
당신은 당신이 글러브를 선호한다고 말 find
했지만, 둘이 상호 배타적이지 않다는 것을 알고 있습니까? 글 로빙은 단지 당신이 실행하는 어떤 명령에서도 발생합니다 ls
. 예를 들면 다음과 같습니다.
$ export BASE=/net/nas/data/languages/pypm/sites/rex/free/2.6
$ echo $BASE/*/pool/v/vi/virtual*1.4.4*pypm | xargs basename
$ ls $BASE/*/pool/v/vi/virtual*1.4.4*pypm | xargs basename
$ find $BASE/*/pool/v/vi/virtual*1.4.4*pypm -print0 | xargs -0 basename
find 예제는 경로에 공백이 포함 된 경우 편리하게 -print0을 사용할 수 있습니다 ( tr
다른 곳에서 언급 된 기반 솔루션은 실제 줄 바꿈이 포함 된 파일이 아닌 일반 공간에서는 효과적 임).
마지막으로 GNU find에 액세스 할 수있는 경우 -printf를 사용하여 기본 이름 호출을 완전히 피할 수 있습니다.
$ find $BASE/*/pool/v/vi/virtual*1.4.4*pypm -printf '%f\n'