>백엔드 개발 >파이썬 튜토리얼 >Bash 쉘을 사용하여 디렉토리의 특정 파일을 삭제하는 3가지 방법

Bash 쉘을 사용하여 디렉토리의 특정 파일을 삭제하는 3가지 방법

高洛峰
高洛峰원래의
2017-01-09 13:24:221926검색

저는 새로운 Linux 사용자입니다. 이제 다운로드 디렉터리의 파일을 정리해야 합니다. 실제로 다음 형식의 파일을 제외하고 ~/Download/ 폴더의 모든 파일을 삭제하고 싶습니다.

1.*.iso - 모든 iso 형식 파일.
2.*.zip - 모든 파일은 zip 형식입니다.

Linux, OS X 또는 Unix 계열 시스템의 bash 쉘에서 특정 파일을 어떻게 삭제합니까?

Bash 쉘은 다음과 같은 풍부한 파일 패턴 일치 문자를 지원합니다.

1.* - 모든 파일과 일치합니다.
2.? - 파일 이름의 단일 문자와 일치합니다.
3.[...] - 둘러싸는 괄호 안의 모든 문자와 일치합니다.

전략 #1: 확장된 패턴 일치 문자를 만나보세요

여기서 시스템에 내장된 shopt 명령을 사용하여 셸에서 extglob 옵션을 활성화한 다음 확장된 패턴을 사용할 수 있습니다. 패턴 일치 문자 , 이러한 패턴 일치자는 다음과 같습니다.

1.?(패턴 목록) - 주어진 패턴을 0개 또는 1개와 일치시킵니다.
2.*(Pattern List) - 주어진 패턴과 0번 이상 일치합니다.
3.+(패턴 목록) - 주어진 패턴을 한 번 이상 일치시킵니다.
4.@(패턴 목록) - 주어진 패턴을 한 번 일치시킵니다.
5.!(패턴 목록) - 주어진 패턴과 일치하지 않습니다.

패턴 목록은 |로 구분된 하나 이상의 패턴(파일 이름)입니다.

먼저 extgolb 옵션을 켜세요:

shopt -s extglob

Bash에서 .zip 및 .iso 파일을 제외한 모든 파일을 삭제하세요.
rm 명령의 구문 형식은 다음과 같습니다.

## 仅保留 file1 文件 ##
rm  !(file1)
 
## 仅保留 file1 和 file2 文件## 
rm  !(file1|file2)
 
## 仅保留 zip 文件 ##
rm  !(*.zip)
 
## 仅保留 zip 和 iso 文件 ##
rm  !(*.zip|*.iso)
 
## 你也可以使用完整的目录 ##
rm /Users/vivek/!(*.zip|*.iso|*.mp3)
 
## 也可以传递参数 ##
rm [选项]  !(*.zip|*.iso)
rm -v  !(*.zip|*.iso)
rm -f  !(*.zip|*.iso)
rm -v -i  !(*.php)

전략 #2: bash의 GLOBIGNORE 변수를 사용하여 지정된 파일을 제외한 모든 파일을 삭제합니다.

bash(1) 매뉴얼 페이지에서 발췌:

콜론으로 구분된 패턴입니다. 경로 확장을 통해 무시할 파일 집합을 정의하는 목록입니다. 경로 확장 패턴과 일치하는 파일이 GLOBIGNORE의 패턴과도 일치하는 경우 일치 목록에서 제거됩니다.

모든 파일을 삭제하고 zip 및 iso 파일만 유지하려면 GLOBIGNORE를 다음과 같이 설정합니다.

## 只在 BASH 中可行 ##
cd ~/Downloads/
GLOBIGNORE=*.zip:*.iso
rm -v *
unset GLOBIGNORE

전략 #3: find 명령을 사용하여 다른 모든 파일을 삭제하고 zip 및 iso만 유지합니다. 파일

tcsh/csh/sh/ksh 또는 다른 쉘을 사용하는 경우 Unix 계열 시스템에서 다음 find 명령 구문을 사용하여 파일을 삭제할 수 있습니다:

find /dir/ -type f -not -name '匹配模式' -delete

또는

## 对于怪异的文件名可以使用 xargs ##
find /dir/ -type f -not -name '匹配模式' -print0 | xargs -0 -I {} rm {}
find /dir/ -type f -not -name '匹配模式' -print0 | xargs -0 -I {} rm [选项] {}

~/source 디렉터리에서 php 이외의 파일을 삭제하려면 다음을 입력하세요.

find ~/sources/ -type f -not -name '*.php' -delete

또는

find ~/sources/ -type f -not -name '*.php' -print0 | xargs -0 -I {} rm -v {}

Keep only *. zip 및 * .iso 파일의 구문은 다음과 같습니다.

find . -type f -not \( -name '*zip' -or -name '*iso' \) -delete


특정 파일 삭제와 관련된 더 많은 쉘 기사를 보려면 PHP 중국어 웹사이트를 참고하세요. !


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.