파일 이름에 지정된 문자열과 일치하지 않는 파일 나열

파일 이름에 지정된 문자열과 일치하지 않는 파일 나열

temp_log.$$확인해야 할 몇 가지 다른 중요한 파일과 함께 해당 이름을 가진 많은 파일(약 200개)이 생성되는 디렉터리가 있습니다 .

temp_log.$$모든 파일을 쉽게 나열하고 표시된 파일을 제외하는 방법은 무엇입니까 ?

예상 출력

$ ls -lrt <exclude-filename-part>
-- Lists files not matching the above given string

ls매뉴얼 페이지를 살펴봤지만 이 참조 자료에서는 아무것도 찾을 수 없습니다. 여기서 중요한 정보를 놓친 경우 알려주시기 바랍니다.

감사해요

답변1

GNU ls(내장되지 않은 Linux 및 Cygwin 버전, 때로는 다른 곳에서도 발견되는 버전)를 사용하면 디렉터리를 나열할 때 특정 파일을 제외할 수 있습니다.

ls -I 'temp_log.*' -lrt

-I( is 의 긴 형식에 유의하세요 --ignore='temp_log.*')

zsh를 사용하면 쉘이 필터링을 수행하도록 할 수 있습니다. 일치하는 디렉터리의 내용을 나열하지 않으려면 를 전달하세요 -d.ls

setopt extended_glob          # put this in your .zshrc
ls -dltr ^temp_log.*

ksh, bash 또는 zsh를 사용하면 ksh 필터 구문을 사용할 수 있습니다. zsh에서 setopt ksh_glob먼저 실행하십시오. Bash에서는 shopt -s extglob먼저 실행하십시오.

ls -dltr !(temp_log.*)

답변2

grep옵션과 함께 사용할 수 있습니다 -v.

ls -lrt | grep -v <exclude-filename-part>

답변3

다음을 위해 사용할 수 있습니다 find:

find . \! -name 'temp_log*'

이것은 타임스탬프와 권한이 있는 스타일이 지정된 출력을 -ls만들기 위해 추가할 수 있는 이름만 인쇄하거나 열, 정렬 등에 대해 원하는 옵션과 함께 실제로 ls에 전달하기 위해 추가할 수 있습니다.ls -l-exec ls {} +

나는 이것이 단지 디렉토리에 있는 파일이라고 가정하고 이 글을 쓰고 있습니다. 디렉터리에 다른 디렉터리가 포함되어 있으면 해당 디렉터리를 반복적으로 나열하지 않는 것이 좋습니다.

find . \! -name 'temp_log*' -maxdepth 1

ls를 사용하는 경우 중지하려면 -d 옵션을 전달해야 합니다.그것디렉토리 목록:-exec ls -d {} +

답변4

그냥 해

ls -ltr `grep -il patterntosearch  *`

관련 정보