我如何获取“查找”输出以便可以将其复制并粘贴到其他命令?

我如何获取“查找”输出以便可以将其复制并粘贴到其他命令?

是否可以find以这样一种方式打印输出路径,以便您可以复制和粘贴它们,它们将被正确转义,以便您可以在该路径上执行命令?通常我必须在它们周围加上引号。

例子。

$ find -iname "*Resume 2004*doc~"
./Career/No Longer Needed/Microsoft Resume 2004.doc
$ rm ./Career/No Longer Needed/Microsoft Resume 2004.doc
ERROR: No such file: ./Career/No
$ rm "./Career/No Longer Needed/Microsoft Resume 2004.doc"

注意:我不想通过或rm“自动”执行。我知道如何做到这一点。-execxargs

答案1

find-exec争论。

如果您想删除find输出,只需使用此命令:

find -iname "*Resume 2004*doc~" -exec rm -f {} \;

答案2

由于文件名中包含空格,因此该rm命令不起作用,因此您必须引用文件,或者可以使用不带引用的反斜杠,如下所示:

rm ./Career/No\ Longer\ Needed/Microsoft\ Resume\ 2004.doc

因此,您无法真正打印路径并通过复制粘贴来删除它,因为您需要添加引号或反斜杠,但您可以做的是使用命令打印inode文件的路径find并使用 inode 号将其删除,如下所示:

find . -type f -name "*Resume 2004*doc~" -printf '%p %i\n'

然后你拿回了它的 inode 比如说 1234567 然后你像这样删除它:

find . -inum 1234567 -exec rm -fi {} \;

相关内容