如果文件存在于单个命令中,请在 Linux 中重命名文件



如果文件存在于单个命令中,我需要在 Linux 中重命名文件。

假设我想搜索test.text文件,我想用test.text替换它.bak然后我触发以下命令

查找/-名称测试.文本如果存在,那么我触发命令mv test.text test.text.bak

在这种情况下,我正在执行两个命令,但我希望这应该发生在一个命令中。

谢谢

只是:

mv test.text test.test.bak 

如果文件不存在,则不会重命名任何内容。若要在未退出任何文件时抑制错误消息,请使用以下语法:

mv test.text test.test.bak 2>/dev/null
如果您想在

dir的子目录中的某个位置找到test.txt并移动它,请尝试

find dir -name test.txt -exec mv {} {}.bak ;

这将移动所有符合条件的文件。 如果要从当前目录遍历,请使用 . 而不是 dir 作为目录。

从技术上讲,这将在单独的进程中为与find匹配的每个文件生成一个单独的命令,但它是"一个命令",因为您正在使用find作为您实际启动的唯一命令自己。 (如果你愿意的话,可以把find想象成一种粗糙的编程语言。

for FILE in `find . -name test.test 2>/dev/null`; do mv $FILE $FILE.bak; done

这将搜索当前和子目录中名为"test.test"的所有文件,然后将每个文件重命名为.bak

相关内容

最新更新