Unix 폴더에 .txt 확장자를 가진 10개의 파일이 있습니다. 여기에서는 fgh.txt(아무 하나) 파일을 제외한 모든 파일을 가져와야 합니다. UNIX 명령은 무엇입니까?

Unix 폴더에 .txt 확장자를 가진 10개의 파일이 있습니다. 여기에서는 fgh.txt(아무 하나) 파일을 제외한 모든 파일을 가져와야 합니다. UNIX 명령은 무엇입니까?

Unix 폴더에 확장자가 .txt인 파일이 10개 있습니다. 여기에서는 fgh.txt(모든 하나) 파일을 제외한 모든 파일을 가져와야 합니다. UNIX 명령이란 무엇입니까?

1.abc.txt
2.bcd.txt
3.cde.txt
4.def.txt
5.efg.txt
6.fgh.txt
7.ghi.txt
8.hij.txt
9.ijk.txt
10.jkl.txt

여기서는 file 을 제외한 모든 파일을 가져와야 합니다 6.fgh.txt. UNIX 명령이란 무엇입니까?

답변1

그리고찾다주문하다:

find . -type f -name "*.txt" ! -name "fgh.txt"
  • -name "*.txt"- 패턴에 해당하는 이름의 파일 찾기 (모든 txt 파일)

  • ! -name "fgh.txt"- 정확한 파일명 외에fgh.txt


파일에 앞에 숫자가 붙은 경우(질문 편집이 확실하지 않음) 부정적인 조건을 다음으로 변경하세요.! -name "*fgh.txt"

답변2

이것외부 전역 변수bash 옵션은 이 문제를 해결할 수 있습니다:

확장 와일드카드는 bash 매뉴얼 페이지에 설명되어 있습니다.

?(pattern-list) 주어진 패턴의 0개 또는 1개의 항목과 일치
*(pattern-list) 주어진 패턴의 0개 이상의 항목과 일치
+(pattern-list) 주어진 패턴의 1개 이상의 항목과
@(pattern-list) 일치 주어진 패턴 중 하나와 일치
!(pattern-list) 주어진 패턴 중 하나를 제외한 모든 항목과 일치

필요한 명령(모든 *fgh.txt파일 제외):

shopt -s extglob
ls -d -- !(*fgh).txt

전체 파일 이름을 기준으로 특정 파일을 제외하려는 경우:

ls -d -- !(6.fgh.txt)

답변3

단순하면서도 우아함(GNU 가정 ls):

ls -I fgh.txt

답변4

파일 목록을 배열에 넣으려면 zsh몇 가지 옵션이 있습니다.

setopt extendedglob # best in ~/.zshrc

# using the negation glob operator:
files=((^*fgh).txt)

# using the "except" glob operator:
files=(*.txt~*fgh*)

# trimming entries from the array afterwards:
files=(*.txt)
files=(${files:#*fgh*})

그런 다음 필요에 따라 배열을 사용하십시오.

ls -ld -- $files

관련 정보