Linux

具有長名稱的 Linux mv 文件

  • January 25, 2018

在 Linux 中,我有時會像這樣重命名文件:

mv dir1/dir2/dir3/file.txt  dir1/dir2/dir3/file.txt.old

請注意,我只想重命名文件,而不是將其移動到另一個目錄。

是否有一個命令可以讓我執行該命令的速記版本?我在想類似的事情:

mv dir1/dir2/dir3/file.txt  file.txt.old

甚至可能是類似的東西(只是附加到名稱):

mv dir1/dir2/dir3/file.txt  {}.old

我的目標是不必再次指定完整路徑。

我知道我寫的那些“例子”不起作用,但這只是我想要完成的一個想法。

我不想進入目錄。

對於單個文件嘗試

mv dir1/dir2/dir3/file.{txt,txt.old}

X{a,b}構造展開到的位置Xa Xb,您可以使用預覽

echo dir1/dir2/dir3/file.{txt,txt.old}

看看它是否適合您的需要。

筆記:

  1. 對於多個文件
mv dir1/dir2/dir3/file{1,2,3}.{txt,txt.old}

不太可能擴展到您想要的。(這將擴展為 file.txt file1.txt.old file2.txt …)

  1. {txt,txt.old}可以{,.old}根據評論縮短為
  2. 如果目錄名稱明確,可以使用萬用字元。
mv *1/*2/d*/*.{,old}

用於多個文件rename

rename -n s/txt/old.txt/ dir1/dir2/dir3/file*.txt 

刪除-n以進行有效重命名。

引用自:https://serverfault.com/questions/893239