我正在尝试从多个目录名称中删除一个字符,但我不确定如何为此设置循环。
Part to remove is '1' (the last digit in the directory name)
e.g. S123451/
S234561/
S345671/
另外,我试图从子文件夹中的多个文件中删除文件名的一部分,但我不确定如何为此设置循环。
Part to remove '_*_*_*****' (everything after the 1st underscore up to before the file extension)
e.g S123451/
/9/
S12345_1_9_00001.nii.gz
/4/
S12345_1_4_00001.nii.gz
S12345_1_4_00001.bval
S12345_1_4_00001.bvec
S234561/
/2/
S23456_1_2_00001.nii.gz
/1/
S23456_1_1_00001.nii.gz
S23456_1_1_00001.bval
S23456_1_1_00001.bvec
S345671/
/5/
S34567_1_5_00001.nii.gz
/20/
S34567_1_20_00001.nii.gz
S34567_1_20_00001.bval
S34567_1_20_00001.bvec
答案1
对于 Larry Wall 的rename
(Debian/ubuntu) 或prename
(Fedora/RHEL/CentOS):
目录:
rename -n 's/.$//' *
换句话说,将最后一个字符替换为空。-n
用于空运行,删除或替换-v
为实际执行。如果您使用该*/
模式来确保仅列出目录:
rename -n 's:./$::' */
文件:
rename -n 's/_[^.]+//' *
换句话说,将第一个下划线及其后面的所有内容替换为非点。