아래와 같이 비표준 및 표준 파일 이름이 있습니다. 비표준 파일 수를 가져와야 합니다..
표준 파일 이름: XYZ알파벳.txt,XYZ알파벳.csv, *.msg
비표준 파일 이름: 989875.txt 또는 myname.csv; 경계가 없으며 무엇이든 가능합니다.
유일하게 좋은 점은 표준 항목을 알고 있으며 간단한 find 명령에 NOT 조건만 수행하면 된다는 것입니다. 나는 무엇을 해야 합니까? 파일 루프 등을 수행하는 데 관심이 없습니다.
답변1
주어진
$ ls
989875.txt myname.csv 'some long.msg' XYZABC.csv XYZABC.txt
그 다음에
$ find . ! \( -name 'XYZABC.*' -o -name '*.msg' \)
.
./myname.csv
./989875.txt
예를 들어
$ find . -type f ! \( -name 'XYZABC.*' -o -name '*.msg' \) -printf '1' | wc -c
2
답변2
파일을 나열 하고 기준을 충족하지 않는 파일을 제외하도록 ls -1
수행할 수 있습니다 . grep -v
개수만 원하므로 파이프를 통해 wc -l
개수를 얻을 수 있습니다. 예를 들어
ls -1 | grep -v XYZABC | wc -l
유일한 문제는 첫 번째 행도 포함한다는 것입니다. 즉, total
개수에서 1을 빼거나 출력을 tail +2
before 으로 보낼 수 있습니다 wc
.
egrep
as를 사용하여 여러 모드를 처리할 수 있습니다.
ls -1 | egrep -v "(XYZABC|.msg)" | tail +2 | wc -l