2
我有4个文件重命名:使用正则表达式在bash与MV
./01:
I0010001 I0020001
./02:
I0010001 I0020001
我想辅助文件名.dcm
添加到每个文件,所以我曾尝试:
$ mv \(*/*\) \1.dcm
mv: cannot stat '(*/*)': No such file or directory
$ mv \(./*/*\) \1.dcm
mv: cannot stat '(./*/*)': No such file or directory
$ mv \(./\*/\*\) \1.dcm
mv: cannot stat '(./*/*)': No such file or directory
$ mv "\(./*/*\)" "\1.dcm"
mv: cannot stat '\(./*/*\)': No such file or directory
$ mv 0\([1-2]\)/I00\([1-2\)]0001 0\1/I00\20001.dcm
mv: cannot stat '0([1-2])/I00([1-2)]0001': No such file or directory
$ mv "0\([1-2]\)/I00\([1-2\)]0001" "0\1/I00\20001.dcm"
mv: cannot stat '0\([1-2]\)/I00\([1-2\)]0001': No such file or directory
$ mv "0\([1-2]\)/I00\([1-2]\)0001" "0\1/I00\20001.dcm"
mv: cannot stat '0\([1-2]\)/I00\([1-2]\)0001': No such file or directory
$ mv "0\([[:digit:]]\)/I00\([[:digit:]]\)0001" "0\1/I00\20001.dcm"
mv: cannot stat '0\([[:digit:]]\)/I00\([[:digit:]]\)0001': No such file or directory
$ mv "0\([1-2]\)\/I00\([1-2]\)0001" "0\1/I00\20001.dcm"
mv: cannot stat '0\([1-2]\)\/I00\([1-2]\)0001': No such file or directory
$ mv \(*\) \1.dcm
mv: cannot stat '(*)': No such file or directory
他们没有产生我想要的结果。
所以你知道:你的问题在于这些不是正则表达式:bash中的明星使用[globbing](https://linux.die.net/man/7/glob)。这里特别的区别是没有捕获组:圆括号只是被视为文字。 – Chris