如何删除文件夹名称的一部分

如何删除文件夹名称的一部分

我有文件夹名称列表

file1xxx
file2xxx
file3xxx

我想从它的名称中删除“xxx”。我尝试了以下 bash

for dirname in $(cat ${in}/all.txt); do # all.txt include the name of the folders in specific path ${in}
    [ -d "$dirname" ] || continue
    mv ${in}/$dirname ${in}/${dirname//.nii/}
done

但没用!有什么建议么?

答案1

bash你可以做:

while IFS= read -r dir; do [[ -d $dir ]] && mv -i "$dir" "${dir%???}"; done <all.txt

all.txt这将逐行读取文件并检查该行代表的目录是否存在,如果存在,则将相应地进行重命名。

编辑 :

要仅删除一个字符,请使参数扩展模式${dir%???}${dir%?},元字符?代表 中的单个字符bash。所以 :

while IFS= read -r dir; do [[ -d $dir ]] && mv -i "$dir" "${dir%?}"; done <all.txt

相关内容