
나는 다음과 같이 디렉터리 이름 목록을 얻을 수 있다는 것을 알고 있습니다.
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/^\.\///'