Rename
將一組具有模式 <name>.1.gz.html 的文件重命名為 <name>.html
我嘗試使用以下命令:
mv *.1.gz.html *.html
但是,我得到了回應:
<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.html
and的文件def.1.gz.html
)您上面的命令實際上正在執行:
mv abc.1.gz.html def.1.gz.html abc.1.gz.html def.1.gz.html
這將嘗試移動
abc.1.gz.html
並def.1.gz.html
進入一個名為def.1.gz.html
. 幸運的是,這失敗了,因為該文件不是目錄。您需要編寫一些腳本來一次查看每個文件,例如:
for file in *.1.gz.html; do mv "$file" "`echo $file | sed 's/\.gz\.html$/.html/'`" done