태그 보관물: shell

shell

파일을 나열 할 때 디렉토리를 제외 시키려면 어떻게합니까? 디렉토리를 제외 시키려면 어떻게합니까? ls . ^는

현재 디렉토리에 파일을 나열 할 때 디렉토리를 제외 시키려면 어떻게합니까?

ls .

^는 목록에 디렉토리를 포함합니다.



답변

이걸로 해봐:

find . -maxdepth 1 -not -type d

답변

정확하게 ls .당신 과 동등한 것을 얻으려면 숨겨진 dirs를 표시하지 않아도됩니다.

find . -maxdepth 1 -not -type d -and -not -name '.*'

그리고 여전히 각 파일 이름 앞에 ‘./’가 붙습니다. 그것은 실제로 문제가 아니지만, 나는 그것이 추악하다고 생각합니다. 나는 ~와 갔다:

ls -p | grep -v '/$'

그러면 목록이 똑같이 보이고 추가 ls인수를 추가 할 수 있습니다 . 를 추가하면 --color=alwaysdircolor가 다시 나타나거나 -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디렉토리 만 나열하려면 제거하십시오 . 또는 … fileASCII, empty, ELF 등 을 이해하고보고 하는 다른 파일 형식으로 디렉토리를 바꾸십시오 .


답변

find바이너리가 지원하지 않는 시스템 -not을 사용하고 있었고 다음을 사용했습니다.

ls|while read f;do [ -f "$f" ]&& echo $f;done

장점 : sh ls echo
bash 및 dash와 호환 되지 않는 것 이외의 다른 것에 의존하지 않습니다.
일부 답변보다 빠르며 RAM과 CPU를 덜 사용하여
다른 것들 (예 : 디렉토리)과 일치하도록 변경할 수 있습니다-f