![find를 사용하여 디렉토리 이름 목록을 얻으십시오.](https://linux55.com/image/24924/find%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%20%EC%9D%B4%EB%A6%84%20%EB%AA%A9%EB%A1%9D%EC%9D%84%20%EC%96%BB%EC%9C%BC%EC%8B%AD%EC%8B%9C%EC%98%A4..png)
나는 다음과 같이 디렉터리 이름 목록을 얻을 수 있다는 것을 알고 있습니다.
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/^\.\///'