파일 이름 길이로 파일 찾기

파일 이름 길이로 파일 찾기

파일 이름의 길이로 모든 파일을 찾고 싶습니다.

a.go예를 들어 , , 와 같이 길이가 1인 파일을 찾으려면 b.go.

나는 다음을 넣었다:

grep '.\{1\}' file

그러나 이것은 작동하지 않습니다. 파일 이름 길이로 파일을 찾으려면 어떤 명령을 사용할 수 있습니까?

답변1

파일 이름만 찾으려면 다음 명령을 사용할 수 있습니다.

find -exec basename '{}' ';' | egrep '^.{100,}$'

그러면 가 실행되어 다음을 find사용하여 파일이나 디렉터리 이름을 가져온 basename다음 최소 100자 이상의 파일 이름이나 디렉터리 이름을 찾습니다. 정확한 길이의 파일 이름 을 찾으려면 {100}.{100,}

경로를 포함한 파일 이름을 찾으려면 다음을 수행하십시오.

find | egrep '/[^/]{100,}$'

그러면 find 명령을 실행한 상대 경로를 포함한 파일 이름이 반환됩니다.

답변2

grep파일 내용에서 패턴을 찾습니다. 당신이보고 싶다면이름파일 중에서 쉘 글로브를 사용할 수 있습니다(현재 디렉토리의 파일 이름만 고려하려는 경우).

echo ?.go

(그런데 명령이 아닌 glob을 평가하는 것은 쉘입니다 echo.)

현재 디렉토리부터 시작하여 디렉토리를 재귀적으로 검색하려는 경우 사용할 도구는 다음과 같습니다 find.

find . -name '?.go'

(셸이 호출되기 전에 패턴을 glob으로 평가하는 것을 방지하려면 패턴을 인용해야 합니다 find.)

답변3

우선 grep네이버 검색을 통해내용물파일 이름을 검색하지 않습니다. 당신이 원하는 그것을 위해 find. 파일 이름 길이를 설정하는 옵션은 없지만 출력을 구문 분석하여 원하는 것을 얻을 수 있습니다. 다음은 다음 파일이 포함된 디렉터리에서 실행하는 몇 가지 예입니다.

$ tree
.
├── a
├── ab
├── abc
├── abcd
└── dir
    ├── a
    ├── ab
    ├── abc
    └── abcd

이 디렉터리에서 파일을 검색하면 다음이 반환됩니다.

$ find . -type f | sort
./a
./ab
./abc
./abcd
./dir/a
./dir/ab
./dir/abc
./dir/abcd

따라서 길이가 X인 파일을 찾으려면 경로를 제거하고 마지막 다음 문자만 일치시켜야 합니다 /.

 $ find . -type f | grep -P '/.{3}$'

sed명령은 ./. 플래그 는 PCRE -P에 필요한 Perl 호환 정규식을 활성화하고 "문자열의 끝과 일치"를 의미합니다.{n}$

간단히 다음과 같이 할 수도 있습니다.

find . -type f | grep -P '/...$'

길이가 15인 파일 이름과 일치하도록 15개의 점을 입력하는 작은 숫자의 경우에는 괜찮습니다. 그다지 효율적이지 않습니다.

마지막으로 확장자를 무시하고 파일 이름만 일치시키려면 다음을 수행하십시오(@slm 제안대로).

find . -type f | grep -P '/.{1}\.'

그러나 이렇게 하면 a.bo.go. 파일 이름에 둘 이상이 포함될 수 있으면 더 좋습니다 ..

find . -type f | grep -P '/.{1}\.[^.]+$'

참고: 위의 해결 방법은 새 줄 문자 등을 포함하지 않는 비교적 정상적인 파일 이름을 가지고 있다고 가정합니다. 또한 원하는 길이가 아닐 수 있는 길이를 계산할 때 파일 이름의 공백을 무시하지 않는 것으로 계산됩니다. 둘 중 하나라도 문제가 있는 경우 알려주시면 답변을 업데이트하겠습니다.

답변4

지정하지는 않지만 파일이 디렉토리 구조 내에 있는 경우 다음을 find사용하여 길이가 1인 파일을 찾는 데 사용할 수 있습니다 grep.

$ find . -type f  | grep -P '/.{1}\.'

$ find . -type f  | grep -P '/.{1}\.' | head -10
./util-linux-2.19/include/c.h
./88366/a.bash
./89186/a.bash
./89563/b.txt
./89563/a.txt
./89563/c.txt
./89563/d.txt
./91734/2.c
./91734/4.c
./91734/1.c

관련 정보