터미널에서 숨겨진 파일 만 표시하는 방법은 무엇입니까? 있습니다. 이 명령 ls -a은

수천 개의 파일이 포함 된 디렉토리가 있는데 그 중 일부는 숨겨져 있습니다.

이 명령 ls -a은 숨겨진 파일을 포함하여 모든 파일을 나열하지만 숨겨진 파일을 나열해야합니다.

어떤 명령을 사용해야합니까?



답변

명령 :

ls -ld .?*

숨겨진 파일 만 나열합니다.

설명 :

 -l     use a long listing format

 -d, --directory
              list  directory entries instead of contents, and do not derefer‐
              ence symbolic links

.?* will only state hidden files


답변

ls -d .!(|.)

OP가 찾고있는 것을 정확하게 수행합니다.


답변

현재 디렉토리에있는 파일을 원한다면 (재귀 없음) 할 수 있습니다

echo .[^.]*

이름이 a로 시작하고 .그 뒤에 점이 아닌 문자가 하나 이상인 모든 파일의 이름이 인쇄됩니다 . 이름이 연속적인 점으로 시작하는 파일의 경우에는 실패하므로 예를 들어 ....foo표시되지 않습니다.

당신은 또한 사용할 수 있습니다 find:

find -mindepth 1 -prune -name '.*'

-mindepth우리가 일치하지 않는 보장하지만 .-prune수단 find서브 디렉토리로 내려하지 않습니다.


답변

ls -ad .*

Bash에서 나를 위해 일합니다.


답변

사용 find하고 awk,

find . -type f | awk -F"/" '$NF ~ /^\..*$/ {print $NF}'

설명:

find . -type f -> 현재 디렉토리의 모든 파일을 경로와 함께 나열하십시오.

./foo.html
./bar.html
./.foo1

awk -F"/" '$NF ~ /^\..*$/ {print $NF}'

/필드 구분 기호 awk는 점으로 시작된 마지막 필드를 확인합니다. 점으로 시작하면 해당 줄의 마지막 필드를 인쇄합니다.


답변

find 이름 검색을 사용하는 것보다 복잡한 검색에 더 나은 옵션입니다.

find . -mindepth 1 -maxdepth 1 -name '.*'

또는

find . -mindepth 1 -maxdepth 1 -name '.*' -o -name '*~'

find . 현재 디렉토리를 검색

-mindepth 1제외합니다. 그리고 .. 목록에서

-maxdepth 1 검색을 현재 디렉토리로 제한

-name '.*' 점으로 시작하는 파일 이름 찾기

-o 또는

-name '*~' 물결표로 끝나는 파일 이름 찾기 (일반적으로 텍스트 편집 프로그램의 백업 파일 임)

그러나 이것과 다른 모든 대답은 현재 디렉토리의 .hidden파일 에있는 파일을 놓칩니다 . 스크립트를 작성하는 경우이 행은 .hidden파일 을 읽고 존재하는 파일 이름을 표시합니다.

if [[ -f .hidden]] # if '.hidden' exists and is a file
then
    while read filename # read file name from line
    do
        if [[ -e "$filename" ]] # if the read file name exists
        then
            echo "$filename" # print it
        fi
    done < .hidden # read from .hidden file
fi


답변

나는 당신이 다음 명령으로 그것을 할 수 있다고 생각합니다.

ls -a | grep "^\." | grep -v "^\.$" | grep -v "^\..$"

ls -a 입력 한 명령, 현재 작업 디렉토리의 모든 파일 및 디렉토리를 표시합니다.

grep "^\."내가 추가 한 명령은 숨겨진 파일 만 표시하도록 출력을 필터링합니다 (이름은로 시작합니다 ".").

grep -v "^\.$" | grep -v "^\..$" 내가 추가 한 명령은 출력을 필터링하여., ..를 제외합니다 (현재 및 상위 디렉토리입니다).

일부 파일 이름에 줄이 여러 개 "\n"있을 수있는 경우 위의 예가 올바르지 않을 수 있습니다.

따라서 문제를 해결하기 위해 다음 명령을 제안합니다.

find -maxdepth 1 -name ".[!.]*"