如何从终端递归删除特定名称的文件
How to delete files of certain name from terminal recursively
我想从子文件夹中删除所有 emacs 备份 (~) 文件。
我知道我可以在每个文件夹中 cd
并使用 rm *~
删除它们(例如备份文件 test.cpp~)。
如何使用一个命令删除这些文件,而不用 cd 在每个文件夹中?
(我尝试了 rm -r *~
和 rm -rf *~
但它们似乎不起作用)
您将使用查找:
find ./ -name *~ -exec rm {} \;
此命令将递归列出所有与给定名称模式匹配的文件。然后它将执行为它们中的每一个提供的命令,用文件名替换大括号。
唯一棘手的部分是分号,因为它会关闭命令,但必须保护它不受 bash 的影响,因此是反斜杠。
有关更多选项,请参阅 https://linux.die.net/man/1/find。
您可以使用 find
和 exec
执行此操作。这是一个可以执行您想要执行的操作的示例:
find -name '*~' -exec rm {} \;
让我们来分解一下它是如何工作的。 find
命令将递归执行它的目录,默认情况下它会打印出它找到的所有内容。使用 -name '*~'
告诉我们仅 select 名称与正则表达式 *~
匹配的条目。我们必须引用它,否则 shell 可能会为我们扩展它。使用 -exec rm {}
将对它找到的每个东西执行 rm
,{}
作为文件名的占位符。 (最后的 ;
是告诉 find
这是命令结束的地方。这不是什么大问题,但如果你不使用它,它会发牢骚并且什么都不做。 \
是为了转义它,因为 ;
是一个特殊的 shell 字符。)
首先,删除这些文件的最佳方法是不创建它们(或者更确切地说,在一个中心位置创建它们):
这是一种使用 Emacs 中的 find
来收集文件列表并有选择地对其进行操作的方法。 M-x find-name-dired RET /path/to/files RET *~ RET
应该获取 /path/to/files/
下的所有备份文件并将它们放入 dired 缓冲区中。然后你可以做一些正常的事情,比如用 m
标记文件,用 t
反转选择,用 D
.
删除选择
find /path/to/directory/ -type f -name '*filtercondition*' -delete
以上命令会在匹配模式的文件夹中递归查找文件并只删除文件
我想从子文件夹中删除所有 emacs 备份 (~) 文件。
我知道我可以在每个文件夹中 cd
并使用 rm *~
删除它们(例如备份文件 test.cpp~)。
如何使用一个命令删除这些文件,而不用 cd 在每个文件夹中?
(我尝试了 rm -r *~
和 rm -rf *~
但它们似乎不起作用)
您将使用查找:
find ./ -name *~ -exec rm {} \;
此命令将递归列出所有与给定名称模式匹配的文件。然后它将执行为它们中的每一个提供的命令,用文件名替换大括号。
唯一棘手的部分是分号,因为它会关闭命令,但必须保护它不受 bash 的影响,因此是反斜杠。
有关更多选项,请参阅 https://linux.die.net/man/1/find。
您可以使用 find
和 exec
执行此操作。这是一个可以执行您想要执行的操作的示例:
find -name '*~' -exec rm {} \;
让我们来分解一下它是如何工作的。 find
命令将递归执行它的目录,默认情况下它会打印出它找到的所有内容。使用 -name '*~'
告诉我们仅 select 名称与正则表达式 *~
匹配的条目。我们必须引用它,否则 shell 可能会为我们扩展它。使用 -exec rm {}
将对它找到的每个东西执行 rm
,{}
作为文件名的占位符。 (最后的 ;
是告诉 find
这是命令结束的地方。这不是什么大问题,但如果你不使用它,它会发牢骚并且什么都不做。 \
是为了转义它,因为 ;
是一个特殊的 shell 字符。)
首先,删除这些文件的最佳方法是不创建它们(或者更确切地说,在一个中心位置创建它们):
这是一种使用 Emacs 中的 find
来收集文件列表并有选择地对其进行操作的方法。 M-x find-name-dired RET /path/to/files RET *~ RET
应该获取 /path/to/files/
下的所有备份文件并将它们放入 dired 缓冲区中。然后你可以做一些正常的事情,比如用 m
标记文件,用 t
反转选择,用 D
.
find /path/to/directory/ -type f -name '*filtercondition*' -delete
以上命令会在匹配模式的文件夹中递归查找文件并只删除文件