
â
ディレクトリ名の名前変更文字を空白に変更しようとしています。たとえば、名前がhow-â8093-to
。
他の修正を含む私が使用したコマンドは次のとおりです。
find . -type d | xargs rename 's/â//'
しかし、まだ動作しません。
答え1
find
ファイルを扱うときは、常にこの-exec
関数を使用するようにしてください。xargs
これは、パラメータの引用に関連する多くの潜在的な問題を回避できるからです。これは、特にファイル名に奇妙な文字がある場合に非常に重要です。
次のコマンドを試してください。
find . -type d -name '*â*' -execdir rename 'â' '' {} \;
これは、名前にâを含むファイルを名前でフィルタリングすることを除いて、以前と同じようにすべてを見つけます(一致しないファイルに対して名前変更コマンドを実行することは意味がありません)。次に、ファイルがrename
見つかった場所で個別に実行されます。 。
答え2
ファイルからその文字を削除したいのですが、できませんか?mv how-
tabhow-8093-to
またはを入力できますかmv how-?8093-to how-8093-to
?
答え3
問題を解決するために、補足文字クラスを使用できます。たとえば、次のようになります。
find . -type d | xargs rename 's/[^A-Za-z0-9 ]//'
ただし、Ubuntu 10.04システムではサンプルファイル名は使用できませんrename
。 Perlのインストールやロケールに問題があるのでしょうか?
答え4
どのバージョンの名前変更を使用しているかわかりませんが(私はutil-linuxバージョンを使用しています)、Fedora 15では次のように動作します。
rename 'â' '' how-â8093-to
名前変更マニュアルから:
NAME
rename - Rename files
SYNOPSIS
rename from to file...
rename -V
DESCRIPTION
rename will rename the specified files by replacing the first occurrence of from in their name by to.
使用中の sed クラス構文については何も読み取れません。