[linux] 在Linux中查询文件并批量删除
查询当前目录中以".“号开头的文件
使用grep命令:
只查询当前目录:
ls -A | grep "^\."
使用find命令:
查询当前目录及其子目录中的文件和目录:
find . -name ".[^.]*"
查询当前目录及其子目录中的文件:
find . -name ".[^.]*" -type f
-type f
选项用来限制查找结果只包括文件,而不包括目录。
可以在-type
选项后面接特定的类型代码。以下是一些常用的类型代码:
-type d
:只匹配目录。-type f
:只匹配常规文件。-type l
:只匹配符号链接。-type c
:只匹配字符设备文件。-type b
:只匹配块设备文件。-type s
:只匹配套接字文件。-type p
:只匹配命名管道(FIFO)。
批量删除所查询到的以”.“号开头的文件
使用grep命令查找,并批量删除:
用xargs
命令来实现将grep
的结果作为参数传递给rm
命令。示例:
# 不询问直接删
ls -A | grep "^\." | xargs rm
# 询问后再删
ls -A | grep "^\." | xargs rm -i
这种情况会删除当前目录中的以”.“号开头的所有文件和文件夹。
其中-i
选项会在删除每个文件之前进行确认。
可以根据提示输入"y"表示确认删除,或输入"n"表示取消删除。
使用find命令查找,并批量删除:
# 方法1(不询问直接删):
find . -name ".[^.]*" -type f -delete
# 方法2(不询问直接删):
find . -name ".[^.]*" -type f -exec rm {} \;
# 方法3(询问后再删):
find . -name ".[^.]*" -type f -exec rm -i {} \;
这种情况会直接删除当前目录及其子目录中,所有以”.“号开头的所有文件。
其中-i
选项会在删除每个文件之前进行确认。
-exec rm {} \;
部分会将find
命令的匹配结果传递给rm
命令来删除这些文件。
具体地说,{}
表示匹配到的每个文件,\;
表示-exec
选项的结束。find
命令将会将每个匹配的文件依次替换到{}
的位置,并执行rm
命令删除这些文件。
务必确认要删除的文件是希望被删除的。
使用find命令,只查找和删除当前目录下的文件或文件夹:
# 删除当前目录下的文件:
find . -maxdepth 1 -type f -name ".*" -delete
# 删除当前目录下的文件夹:
find . -maxdepth 1 -type d -name ".*" -exec rm -r {} \;
# 删除当前目录下的文件,询问后删除:
find . -maxdepth 1 -type f -name ".*" -exec rm -i {} \;
-maxdepth 1
选项限制了只在当前目录中搜索,而不会搜索子目录。
在查找命令的基础上添加-delete
选项,或者使用rm -r
命令递归删除文件夹。