수천 개의 파일이 포함 된 디렉토리가 있는데 그 중 일부는 숨겨져 있습니다.
이 명령 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 ".[!.]*"