需要一个shell脚本来删除除*.pdf之外的所有文件

xia*_*amx 4 bash shell sh delete-file

任何人都可以编写一个shell脚本来删除文件夹中的所有文件,除了那些有pdf扩展名的文件吗?

Jul*_*ano 14

这将包括所有子目录:

find . -type f ! -iname '*.pdf' -delete
Run Code Online (Sandbox Code Playgroud)

这将仅在当前目录中起作用:

find . -maxdepth 1 -type f ! -iname '*.pdf' -delete
Run Code Online (Sandbox Code Playgroud)

  • 这也将删除子目录中的非pdf文件 (2认同)

mik*_*iku 6

$ ls -1 | grep -v '.pdf$' | xargs -I {} rm -i {}
Run Code Online (Sandbox Code Playgroud)

或者,如果您有信心:

$ ls -1 | grep -v '.pdf$' | xargs -I {} rm {}
Run Code Online (Sandbox Code Playgroud)

或者,防弹版:

$ find . -maxdepth 1 -type f ! -iname '*.pdf' -delete
Run Code Online (Sandbox Code Playgroud)

  • ls输出意味着显示给用户,而不是解析.ls可以替换字符或重新格式化文件名以便将其呈现给用户. (3认同)

Pau*_*ce. 5

这应该做的伎俩:

shopt -s extglob
rm !(*.pdf)
Run Code Online (Sandbox Code Playgroud)