我有很多 txt 文件,名称为“file1.txt file2.txt file3.txt ... file1000.txt
如何删除所有这些文件?” 我是 unix 新手,担心意外删除目录中的其他文件。
我看过其他问题,但我不确定,我可以做类似的事情吗
rm -v !("differentfile"|"anotherfile"|"otherfile"|"finalfile")
Run Code Online (Sandbox Code Playgroud)
因此删除所有具有相同名称和不同编号的文件并保留我想要的几个文件?此行应该只删除我的工作目录/文件夹中的文件,正确吗?
有没有办法使用 rm 但只删除我想一次性删除的特定文件?
rm file*.txt
将删除当前目录中名称以 string 开头file
并以 string 结尾的所有文件.txt
。
如果其中有很多,您将收到“参数列表太长”错误。在这种情况下,您可以使用
find . -maxdepth 1 -name 'file*.txt' -delete
Run Code Online (Sandbox Code Playgroud)
反而。
这将使用该find
命令查找file*.txt
当前目录中名称匹配的任何文件,并将其删除。该-maxdepth 1
选项限制进入除(当前目录)find
之外的任何子目录。.
该命令不会区分文件和目录(就像rm file*.txt
两者都不会一样)。如果您想确保只删除常规文件,请使用
find . -maxdepth 1 -type f -name 'file*.txt' -delete
Run Code Online (Sandbox Code Playgroud)
对于find
没有非标准-delete
和/或-maxdepth
选项的实现,请使用
find . ! -path . -prune -type f -name 'file*.txt' -exec rm -f {} +
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用一个简单但缓慢的循环:
for name in file*.txt; do
rm -f "$name"
done
Run Code Online (Sandbox Code Playgroud)