ファイル名からすべての括弧を削除しようとしました。これを行うためにbashスクリプトを作成するのに役立つ人はいますか?
次のbashスクリプトは、角かっこなしのファイル名と完全に機能しますが、角かっこがある場合、ファイル名は2倍になります。
#!/bin/bash
for fname in *; do
name="${fname%\.*}"
extension="${fname#$name}"
newname="${name//[/}"
newfname="$newname""$extension"
if [ "$fname" != "$newfname" ]; then
#echo mv "$fname" "$newfname"
mv "$fname" "$newfname"
fi
done
出力例:
$ touch [test]
$ ls
[test] rep.sh
$ bash rep.sh
$ ls
rep.sh test][test]
したがって、開いている括弧は削除されますが、ファイル名は重複します。
ベストアンサー1
私はこの裏地を見つけ、これはうまくいきます:
for x in *[*; do mv -- "$x" "${x//[/}"; done
これにより操作が実行されます。このコマンドを実行するたびに開くかっこまたは閉じ括弧を置き換えます。