로 시작하는 파일 만 표시합니다. (숨겨진)


11

숨겨진 파일 만 표시하려고했지만 어떻게 해야할지 모르겠습니다.

작동하지만 다른 장소의 점과도 일치합니다.

ls -la | grep '\.'

추가를 시도 ^했지만 해결책을 찾지 못했습니다.


1
파싱 ls은 결코 훌륭한 아이디어가 아니지만, 앵커 ^를 사용하여 일치의 시작을 나타내는 경우 시도한 것이 효과가 있었을 것 입니다. ls -la | grep '^\.'
devnull

3
그렇지 않습니다. 파일 이름은 -l 플래그가있는 행의 시작이 아닙니다. ls -la | awk '$9 ~ /^\./'의지.
yoonix

답변:


18

ls -ld .* 당신이 원하는 것을 할 것입니다.


5
find . -type f -name '\.*' -print 

모든 숨겨진 파일을 디렉토리 계층에 나열하려면 작동해야합니다.


2

ls출력 을 구문 분석 하려면 ^정규식 시작 부분에 추가 하고 -l옵션을 사용하지 않아야합니다 . 를 사용 -l하면 각 줄 출력이 파일 또는 폴더 이름이 아닌 파일 또는 폴더 권한 정보로 시작합니다. 따라서 다음과 같이 사용해야합니다.

ls -Ad | grep '^\.'

또는 printfbash 내장으로 할 수 있습니다 :

printf "%s\n" .*

를 사용하면 다음을 사용할 zsh수 있습니다.

print -l .*

1

숨겨진 파일 만 찾는 두 가지 다른 방법이 있습니다.

find . -maxdepth 1 -name ".*" -type f -ls

또는

find . -maxdepth 1 -name ".*" -type f -printf "%P \n"

-maxdepth디렉토리 트리에서 검색 할 거리를 지정하는 데 사용하십시오 .


1

Flup의 답변 개선 :

ls -lad .[!.]* ..?*

이 이름이 시작 점과 어느 쪽도 아니 모든 파일이 나열됩니다 .도를 ...

참고 파이프로의 출력하려면 있음 ls에을 grep(이, devnull에 의해 지적 아웃으로 , 좋은 아이디어 결코), 당신이 사용하도록 \ls또는 command ls경우 때문에 ls별명이 (가 예를 들어 데비안에로) 당신에게 색깔의 출력을 보여 , 출력에는 컬러 이스케이프 출력을 생성하기위한 ANSI 이스케이프 시퀀스가 ​​포함되어 있습니다 grep.


1
당신은 사용할 수 있습니다 -A(대신 -a무시) ., ...
OJFord

@ OJFord + -A는 내림차순 -a디렉토리 와 다르지만 ls둘 다 명령 줄에 지정된 이름에 대해 (동일하게) 무시되고 쓸모가 없습니다 -d. 또한 ls별칭이 지정 되면 --color=auto 파이핑이 가능합니다. 단지 --color=always또는 --color원인 문제.
dave_thompson_085

0

val0x00ff의 솔루션은 정말 좋지만 숨겨진 디렉토리는 잊어 버립니다.

숨겨진 파일 숨겨진 디렉토리 를 원하는 경우 . 그리고 .. :

find -maxdepth 1 -regex '\./\..+' -printf "%P\n"

제안은 VMware ESXi (파일 없음 및 디렉토리 없음)에서 실패하고 Linux에서도 일종의 실패 (maxdepth> 1 인 경우.로 시작하는 디렉토리의 모든 파일을 나열 함)이지만 Linux 및 ESXi 모두에서 작동합니다. find . \( -type f -o -type d \) -name '\.*' -print; maxdepth필요한 곳에 적용하십시오 .
Jeroen Wiert Pluimers

0

아래는 매우 작고 많은 변형을 지원합니다.

1) 숨겨진 파일, 디렉토리 및 하위 디렉토리 표시

find . | grep "^\./\."

2) 숨겨진 디렉토리 및 하위 디렉토리 만 표시

find . -type d | grep "^\./\."

3) 현재 및 서브 디렉토리에서만 숨겨진 파일 표시

find . -type f | grep "^\./\."

4) 현재 폴더에 숨겨진 파일 및 디렉토리 표시

find . -maxdepth 1 | grep "^\./\."


0

당신은 시도 할 수 있습니다:

find . -maxdepth 1 -type f -name '\.*' -print
find . -maxdepth 1 \( -type f -o -type d \) -name '\.*' -print

물론 다른 maxdepth값을 사용 하거나 완전히 제거 할 수 있습니다 . 디렉토리 ( -type d) 또는 일반 파일 ( type f) 또는 둘 다를 탐색 하고 다음과 같은 다른 기능과 결합 하려는 경우 매우 유용합니다 .

(예 : @piroux 예제를 기반으로하는 마지막 수정 시간 - @ jeroen-wiert-pluimers 완료 )

find . -maxdepth 1 \( -type f -o -type d \) -name '\.*' -exec stat -c %y {} \; -printf "%P\t"

-1

당신은 시도 할 수 있습니다 :

ls -a |grep -E  "^\."

^는 정규 표현식으로 내용의 시작임을 나타냅니다.


1
3 년 전의 또 다른 답변 의 복제본
Jeff Schaller

이전 답변을 보았는데, 중복되지 않았으며 "ls -a"와 "ls -Ad"는 같은 의미를 갖지 않습니다. "-a"는 파일 / 디렉토리를 포함한 모든 목록이 "."으로 시작 함을 의미합니다. -A는 "."를 제외한 모든 목록을 의미합니다. , ".."및 디렉토리 내용.
Lingjing France
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.