필요찾다명령으로 생성된 출력은 ls -p
생성된 출력과 정확히 동일합니까?
find /path/to/ -mindepth 1 -maxdepth 1 -exec basename {} \;
디렉터리에 후행 슬래시가 없으므로 후행 슬래시가 있으려면 출력 폴더 이름이 필요합니다 .
예제 출력:
folder 1/
my-file-1.sh
찾다명령은 전체 경로 없이 디렉터리 내용을 나열하고 뒤에 슬래시가 있는 폴더를 나열합니다.
답변1
$ find /path/to -mindepth 1 -maxdepth 1 -exec sh -c '
[ -d "$1" ] && printf "%s/\n" "${1##*/}" || printf "%s\n" "${1##*/}" ' _ {} \;
aDirectory/
afile
설명하다:
[ -d "$1" ]
, 이는 다음과 같은지 확인합니다.목차, 그렇다면 다음 명령을 실행하십시오printf
.printf "%s/\n" "${1##*/}"
그렇지 않으면 다음과 같이 실행하십시오
printf
.printf "%s\n" "${1##*/}"
${1##*/}
*
: 파일/디렉터리 경로 구걸에서 시작하여 마지막 슬래시까지 모든 항목 중 가장 긴 일치 항목을 제거하여/
마지막 디렉터리/파일 이름만 생성됩니다.
답변2
적어도 GNU find를 사용하면 내장된 -printf
기능을 사용할 수 있습니다.
find . -mindepth 1 -maxdepth 1 -type d -printf '%f/\n' -o -type f -printf '%f\n'