我正在尝试查找并删除.
目录中以 开头的所有文件,我知道我可以通过命令终端执行此操作,但我对 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 ... done
GLOB 扩展为所有与其匹配的文件名,遍历这些文件,按顺序将每个文件保存为,然后在它们上运行和$file
之间的命令。do
done
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 .[^.]*