ディレクトリ/ファイル名から特定の文字を一括削除する方法

ディレクトリ/ファイル名から特定の文字を一括削除する方法

Fedora 29でこれを行うには、どのコマンドを使用できますか? [,] および - を削除する必要があります。可能であれば文字を削除してください。そうでなければ、喜んで「_」に変更します。 2,400を超えるファイルとディレクトリがあり、次の名前のサブディレクトリがあります。

TWENTY_ONE_PILOTS_-_DISCOGRAPHY_(2009-15)_CHANNEL_NEO]

ディレクトリを簡単に作成できるようにするために必要です。たとえば、

TWENTY_ONE_PILOTS_DISCOGRAPHY_2009_15_CHANNEL_NEO

私は試した:

find . -depth -name '*]*' -execdir bash -c 'for i; do mv "$i" "${i

│// /_}"; done' _ {} +

そして

for x in *]*; do mv -- "$x" "${x//[/}"; done

エンダー

rename 's/\(|\[|\]|\)//g' *

ベストアンサー1

あなたはそれを使用することができます:find . -exec sh -c './correct.sh {}' \;

上記のコマンドを実行したのと同じディレクトリに正しい.shを配置します。

#!/bin/bash

mv "$1" $(echo "$1" | sed's/_-_/_/g');

(忘れないでくださいchmod +x correct.sh!)

これは非常にエレガントな解決策ではありませんが、うまくいきます。-execオプションであり、findファイルの各名前、上記の手順(ここsh -c '...')に対して実行され、{}をファイル名に変更することを除いて、すべてが自明です!バラよりマニュアルページを探すより多くの情報を知りたいです。

ファイルディレクトリの名前だけを変更したい場合は、-type d検索オプションに入れてください。もちろん、必要に応じてsedを変更して、必要なものを変更できます。

おすすめ記事