Bash
如何獲取使用正則表達式重命名的文件的句柄?
我正在用正則表達式重命名文件…
f='/path/to/file' rename 's/(^.*)([ab])(.*)([cd])(.*$)/$1$4$3$2$5/s' "$f"
然後我如何獲得重命名文件的句柄,以便我可以處理它,因為我不知道它將被重命名是什麼?
您正在給出
rename
一個 Perl 表達式(更準確地說是一個替換)。不用將該表達式提供給 ,而是rename
使用 Perl 對其進行評估,然後移動您的文件:f='/path/to/file' newname=$( perl -pe 's/(^.*)([ab])(.*)([cd])(.*$)/$1$4$3$2$5/s' <<<"$f" ) printf 'New name is "%s"\n' "$newname" mv -- "$f" "$newname"
或者,只需使用表達式輸出新名稱並從以下位置擷取它
rename
:f='/path/to/file' newname=$( rename 's/(^.*)([ab])(.*)([cd])(.*$)/$1$4$3$2$5/s; print "$_\n"' "$f" ) printf 'New name is "%s"\n' "$newname"
這是假設您使用的是
rename
基於 Perl 的File::Rename
模組。