如果文件存在于单个命令中,我需要在 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