현재 디렉토리에 파일을 나열 할 때 디렉토리를 제외 시키려면 어떻게합니까?
ls .
^는 목록에 디렉토리를 포함합니다.
답변
이걸로 해봐:
find . -maxdepth 1 -not -type d
답변
정확하게 ls .
당신 과 동등한 것을 얻으려면 숨겨진 dirs를 표시하지 않아도됩니다.
find . -maxdepth 1 -not -type d -and -not -name '.*'
그리고 여전히 각 파일 이름 앞에 ‘./’가 붙습니다. 그것은 실제로 문제가 아니지만, 나는 그것이 추악하다고 생각합니다. 나는 ~와 갔다:
ls -p | grep -v '/$'
그러면 목록이 똑같이 보이고 추가 ls
인수를 추가 할 수 있습니다 . 를 추가하면 --color=always
dircolor가 다시 나타나거나 -a
숨겨진 파일이 표시됩니다.
Alexander는 실제로 문제의 파일의 파일 시스템 특성에 따라 달라지기 때문에 Alexander의 답변을 좋아합니다. 내 대답은 이름의 마지막 문자로 ‘/’가있는 파일에 속지 않습니다. 그러나 그것은 문제를 요구하는 것처럼 보입니다.
답변
이 시도:
$ 찾기. -타입 f-최대 깊이 1
아니면 이거:
$ ls -p | egrep -v / $
$ ls -la | egrep -v ^ d
답변
오래된 게시물이지만 이것이 도움이 될 것이라고 생각했습니다 ..
$ ls -l | grep -v ^ d
심볼릭 링크, 문자 및 블록 파일을 포함한 모든 파일을 나열합니다.
답변
위의 “찾기”솔루션은 ls의 일부 기능을 잃 습니다 (예 : 내림차순 수정 시간으로 정렬 된 파일 만 나열).
“ls -p | grep”답변은 원하는 경우 -R과 같은 ls의 다른 요소를 우아하게 처리하지 않습니다.
다음 대답은 잠시 더 자세한, 제 생각에 진정한 반영 LS의 “파일 만”을 선택하는 행동과 대부분의 유연성을
ls -t . | while read line; do
if [ -f $line ]; then
echo $line
fi
done
원하는대로 ls 스위치를 교체하면 결과가 파일로만 리턴됩니다. 링크 및 기타 항목도 필요한 경우 포함 테스트를 위해 약간의 재 작업을 수행해야합니다.
답변
ls $(file --no-pad -F' ' * | grep -v directory | cut -d' ' -f1)
이를 통해 ls
일반적으로 사용되는 다른 옵션을 계속 사용할 수 있습니다 . 또는 … -v
디렉토리 만 나열하려면 제거하십시오 . 또는 … file
ASCII, empty, ELF 등 을 이해하고보고 하는 다른 파일 형식으로 디렉토리를 바꾸십시오 .
답변
find
바이너리가 지원하지 않는 시스템 -not
을 사용하고 있었고 다음을 사용했습니다.
ls|while read f;do [ -f "$f" ]&& echo $f;done
장점 : sh ls echo
bash 및 dash와 호환 되지 않는 것 이외의 다른 것에 의존하지 않습니다.
일부 답변보다 빠르며 RAM과 CPU를 덜 사용하여
다른 것들 (예 : 디렉토리)과 일치하도록 변경할 수 있습니다-f