ターミナルでは、ダッシュで始まる単一のファイルの名前を変更できます。
mv ./-file file
また、ディレクトリでダッシュで始まるすべてのファイルの名前を変更することもできます。
for f in ./-*; do rename 's/-//' "$f"; done
ただし、どのように再帰的にこれを行うことができます。 find
コマンド、rename
コマンド、および再帰for
ループを使用してみました。ところで、多くのファイル名には複数のダッシュがあります。最初のダッシュだけを削除したいです。ありがとう!
find
およびrename
の使用:
find . -iname '-*' -execdir rename -n 's:./-:./:' {} +
find . -iname '-*'
は-
で始まるすべてのファイル名に一致し、-execdir ... {} +
はそれらのファイル名を引数としてコマンドを実行します。aftercd
ingを含むディレクトリファイル。これは、コマンド引数が常に./-foo
という形式のファイル名を持つことを意味します。正規表現で-
の後に./
を一致させるのは簡単です。