查找并删除目录中以 . 开头的所有文件

查找并删除目录中以 . 开头的所有文件

我正在尝试查找并删除.目录中以 开头的所有文件,我知道我可以通过命令终端执行此操作,但我对 Ubuntu 非常陌生,还不太了解命令。任何帮助都将不胜感激!

答案1

隐藏文件不一定是二进制文件。

您可以使用以下命令来执行此操作:

find /path/to/start/ -maxdepth 1 -name ".*" -type f -delete

这将搜索/path/to/start/以点开头的文件(-name ".*"*表示所有内容),而不搜索子目录(-maxdepth 1,更改1为更深层的搜索)仅搜索文件(-type f)并且将删除所有结果(-delete)。

删除这些文件并不总是一个好主意!执行此操作之前,请确保您知道自己在做什么。某些文件隐藏是有原因的。

答案2

您还可以使用 shell globs 和 for 循环来执行此操作:

for file in .[^.]*; do rm "$file"; done

将把for file in GLOB; do ... doneGLOB 扩展为所有与其匹配的文件名,遍历这些文件,按顺序将每个文件保存为,然后在它们上运行和$file之间的命令。dodone

glob.[^.]*将匹配所有以 a 开头.且后跟非点字符 ( [^.]) 的文件。后者是避免匹配.../ 所必需的。

例如:

$ ls -1A
.dot and spaces
.dotfile1
internal.dot
nodot
$ for file in .[^.]*; do rm -v "$file"; done
removed ‘.dot and spaces’
removed ‘.dotfile1’
$ ls -1A
internal.dot
nodot

如果您想要在当前目录以外的目录运行此命令,只需将路径添加到 glob 中。例如:

for file in /home/terdon/foobar/.[^.]*; do rm "$file"; done

当然,循环本身是不需要的,因为@gniourf_gniourf指出在评论中,你可以简单地删除所有文件

rm .[^.]*

相关内容