Bash

如何獲取使用正則表達式重命名的文件的句柄?

  • January 20, 2022

我正在用正則表達式重命名文件…

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模組。

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