ファイル名からすべての括弧を削除します。

ファイル名からすべての括弧を削除します。

ファイル名からすべての括弧を削除しようとしました。これを行うために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

これにより操作が実行されます。このコマンドを実行するたびに開くかっこまたは閉じ括弧を置き換えます。

おすすめ記事