find를 사용하여 디렉터리의 특정 파일 이름을 반환합니다(경로 없이).

find를 사용하여 디렉터리의 특정 파일 이름을 반환합니다(경로 없이).

특정 파일 이름을 가진 파일을 반환하는 데 사용하고 싶습니다 find. 이 경우 _.

사용할 수 있다는 것을 배웠습니다

find . ! '(' -name '_*' ')'

그러나 이전 경로 이름 없이 파일 이름을 반환하고 싶습니다. basenamebash에서 cmd를 사용하여 이를 수행할 수 있는 방법이 있습니까 ?

또한 이 작업을 수행할 수 있는 이와 같은 다른 명령에도 열려 있습니다 ls.

답변1

예, -를 사용하여 작업 basename에 매개변수로 전달할 수 있습니다 .-exec

find . ! -name '_*' -exec basename {} \;

(연산자 우선순위 문제가 없으므로 그룹화 대괄호는 필요하지 않습니다.)

또는 GNU가 있는 경우 find해당 -printf작업은 일반 파일 이름에 대한 형식 지정자를 제공합니다.

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

그래서

find . ! -name '_*' -printf '%f\n'

답변2

올바른 형식은 다음과 같으며 원하는 경우파일 이름인쇄하려면 findshell (POSIX sh/bash/Korn/zsh) parameter substitution expansion.:

find /path/to -type f -name "[!_]*" -exec sh -c 'printf "%s\n" "${1##*/}"' _ {} \;

아니면 당신이 선두에 나서는 것이 괜찮다면 우리가 find조합을 할 수도 있습니다.-execdir./

find /path/to -type f -name "[!_]*" -execdir printf '%s\n' {} +

당신도 그것을 사용할 수 있습니다 find -type f ! -name "_*" ....

답변3

find . -type f ! -name "_*" -printf "%f\n"

with는 POSIX에 대한 GNU 확장 printf입니다 .%ffind

관련 정보