フォルダ名のリストがあります
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
その後、ファイルを1行ずつ読み、その行が表すディレクトリがあることを確認します。存在する場合、それに応じて名前が変更されます。
編集する:
1文字だけを削除するには、以下を使用してください。パラメータ拡張パターン${dir%???}
はです${dir%?}
。ここで、メタ文字は?
の個々の文字を表しますbash
。だから:
while IFS= read -r dir; do [[ -d $dir ]] && mv -i "$dir" "${dir%?}"; done <all.txt