如果在Linux中存在文件,我想用一个命令重命名文件。
假设我要查找test.text文件,并将其替换为test.text.bak,则可以执行以下命令:
find / -name test.text 如果它存在,则执行以下命令: mv test.text test.text.bak
在这种情况下,我执行了两个命令,但我希望这可以在一个命令中完成。
谢谢
如果在Linux中存在文件,我想用一个命令重命名文件。
假设我要查找test.text文件,并将其替换为test.text.bak,则可以执行以下命令:
find / -name test.text 如果它存在,则执行以下命令: mv test.text test.text.bak
在这种情况下,我执行了两个命令,但我希望这可以在一个命令中完成。
谢谢
Just:
mv test.text test.test.bak
如果文件不存在,则不会重命名任何内容。 为了抑制错误消息,当没有文件存在时,使用以下语法:
mv test.text test.test.bak 2>/dev/null
test.text
不在当前目录中,这个解决方案是否有效? - Tim Biegeleisenmv
只是检查文件名参数;如果你说mv path/to/file.txt path/to/file.txt.bak
,那么它将在当前目录中的path
中查找,然后在其中查找to
。如果你使用绝对文件名,它将使用该文件名。 - tripleee如果您想在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
find -exec mv
,但那样会重复我的答案。 - tripleee