Rename

將一組具有模式 <name>.1.gz.html 的文件重命名為 <name>.html

  • July 3, 2015

我嘗試使用以下命令:

mv *.1.gz.html *.html

但是,我得到了回應:

&lt;filename> 不是目錄。

我怎樣才能得到這個工作?我也嘗試了重命名命令,但是我也無法讓它工作。對我來說太多的正則表達式。

如果我理解得更好,我認為使用 xargs 會起作用。

mv重命名單個文件或將許多文件移動到單個目錄中。

如果要重命名許多文件,您可能要使用rename.

根據您的版本rename

rename .1.gz.html .html *.1.gz.html

或者

rename 's/\.1\.gz\.html/\.html/' *.1.gz.html

第一個版本更容易編寫第二個版本更強大,有時可以作為perl-rename. 看看man rename以找到正確的語法。

像這樣的萬用字元會在命令執行之前擴展為與之匹配的所有內容。mv更糟糕的是,它*.html也會匹配您的*.1.gz.html文件。

這意味著(例如兩個名為abc.1.gz.htmland的文件def.1.gz.html)您上面的命令實際上正在執行:

mv abc.1.gz.html def.1.gz.html abc.1.gz.html def.1.gz.html

這將嘗試移動abc.1.gz.htmldef.1.gz.html進入一個名為def.1.gz.html. 幸運的是,這失敗了,因為該文件不是目錄。

您需要編寫一些腳本來一次查看每個文件,例如:

for file in *.1.gz.html; do
 mv "$file" "`echo $file | sed 's/\.gz\.html$/.html/'`"
done

引用自:https://unix.stackexchange.com/questions/213681