web-dev-qa-db-ja.com

名前がダッシュで始まるすべてのファイルの名前を再帰的に変更します

ターミナルでは、ダッシュで始まる単一のファイルの名前を変更できます。

mv ./-file file

また、ディレクトリでダッシュで始まるすべてのファイルの名前を変更することもできます。

for f in ./-*; do rename 's/-//' "$f"; done

ただし、どのように再帰的にこれを行うことができます。 findコマンド、renameコマンド、および再帰forループを使用してみました。ところで、多くのファイル名には複数のダッシュがあります。最初のダッシュだけを削除したいです。ありがとう!

5
jbrock

findおよびrenameの使用:

find . -iname '-*' -execdir rename -n 's:./-:./:' {} +

find . -iname '-*'-で始まるすべてのファイル名に一致し、-execdir ... {} +はそれらのファイル名を引数としてコマンドを実行します。aftercdingを含むディレクトリファイル。これは、コマンド引数が常に./-fooという形式のファイル名を持つことを意味します。正規表現で-の後に./を一致させるのは簡単です。

10
muru