我有文件夹名称列表
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