UNIX/Linux:批量删除多个文件

时间:2020-01-09 14:16:15  来源:igfitidea点击:

在Linux/UNIX/* BSD MacOS X操作系统下,如何批量删除多个文件(例如,存储在/netapp /及其子目录中的所有* .bak文件)?
您可以按以下方式使用find命令来批量查找和删除文件。

查找命令

语法为:

find /path/to/delete -type f -iname "fileType" -delete

或者

find /path/to/delete -type f -iname "fileType" -exec rm -f {} \;

要从/netapp /及其子目录中批量删除所有* .bak文件,请输入:

# find /netapp/ -type f -iname "*.bak" -delete

或者

# find /netapp/ -type f -iname "*.bak" -exec rm -f {} \;

Shell脚本编写示例,用于批量删除文件

在此示例中,我有一个名为delete.txt的文件(每行包含5000多个条目),您需要删除所有这些文件:

/netapp/one.txt
/netapp/dir2/one.txt
/netapp/dir1/dir500/one.txt
....
...
....
/netapp/fivek.txt

如下创建shell脚本,以使用while循环一次一行来读取文本文件:

#!/bin/bash
# Author: 
# Purpose: Delete a file using shell script in bulk
# -------------------------------------------------- 
## SET ME FIRST ##
_input="/path/to/delete.txt"
 
## No editing below ##
[ ! -f "$_input" ] && { echo "File ${_input} not found."; exit 1; }
while IFS= read -r line
do 
	[ -f "$line" ] && rm -f "$line"
done < "${_input}"

如下运行:

$ chmod +x script.sh
$ ./script.sh

while语句用于在每个文件上重复执行rm命令。