查询当前目录中以".“号开头的文件


使用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命令递归删除文件夹。