find를 사용하여 디렉토리 이름 목록을 얻으십시오.

find를 사용하여 디렉토리 이름 목록을 얻으십시오.

나는 다음과 같이 디렉터리 이름 목록을 얻을 수 있다는 것을 알고 있습니다.

find . -type d -maxdepth 1 

출력은 다음과 같습니다.

.
./foo
./bar

나는 none 을 선호합니다 ./. find를 원래 이름으로 출력하는 방법이 있습니까?

형식을 지정하기 위해 stat에 목록을 보내려고 했지만 결과는 동일했습니다.

find . -type d -maxdepth 1 -print0 | xargs -0 stat -f '%N'

답변1

GNU의 경우 find다음 -printf옵션을 사용할 수 있습니다.

find . -maxdepth 1 -type d -printf '%f\n'

Paweł이 주석에서 지적했듯이 현재 디렉토리를 나열하지 않으려면 -mindepth 1다음과 같이 추가하십시오.

find . -mindepth 1 -maxdepth 1 -type d -printf '%f\n'

답변2

고쳐 쓰다:

더 짧은 대안:

 find . -maxdepth 1 -type d | cut -c 3-

슬래시 없이 한 줄에 하나씩 이름을 제공합니다.

답변3

GNU find를 사용할 때 -minlength를 사용하여 find가 현재 디렉터리와 일치하지 않도록 할 수 있습니다.

find . -type d -maxdepth 1 -mindepth 1

이 작업을 재귀적으로 수행하지 않으므로 bash glob을 사용할 수 있습니다.

echo */

glob에 /를 추가하면 디렉터리만 일치하게 됩니다.

답변4

다음 두 문자를 제거해 보겠습니다 sed.

find . -maxdepth 1 -type d | sed -e 's/^\.\///'

관련 정보