先頭にドットとスペースがあり、最後にドットが欠落しているjpgファイルを変更しようとしています(下の. Startjpg
図を参照)。Start.jpg
要点はファイルを非表示にしてsed
そのls -al
ファイルを一覧表示するため、ls -al
オンラインsed
で多くのドキュメントを読みましたが、常にこのエラーが発生します。
sed: -e expression #1, char 6: unknown command: `/'
頑張った
ls -al | sed -r '/^\./*.*/g'
ls -al | sed -r '/^\.//g'
ls -al | sed -r '/.*/[\.]g'
ls -al | sed 's/^\./\\1*./g'
もっとあります。
また、filejpgをfile.jpgに変更する必要があります。
ベストアンサー1
Perlrename
ツールrename
のprename
使用
rename -n 's/(?<!\.)jpg$/.jpg/' * # -n makes it show you what it'll do,
# but not actually do it. Remove the -n to
# actually rename
このパターンを分析してみましょう。jpg$
これは「jpg」で終わるという意味です。(?<!\.)
「 'jpg'の前に点がない」を意味します。これはあなたが愚かなことにfoo.jpg
なるのを防ぐでしょう。foo..jpg
*
通常のシェルワイルドカードにrename
名前を変更することを検討するファイルのリストを取得します。あなたは間違いなくこれを行うことができ、/path/to/dir/*
ファイル名のリストを渡し、find
他のものと組み合わせることができます。
最初からドットやスペースを削除するのも非常に簡単です。
rename -n 's/^[. ]+//' * # trying -n first is good practice
これにより、すべての先行点とスペースが削除されます。なります. . . foo
。foo
通常、*
シェル拡張は名前がドットで始まるファイル(隠しファイル)を生成しません。 1つのオプションはを使用することです.*
。これにより、2つの特殊アイテム.
(現在のディレクトリ)と..
(親ディレクトリ)も作成されます。この場合、害はありません。最初のコマンドはそれを無視します(で終わらないjpg
)。 2番目のコマンドは名前を変更しようとしますが、エラーが発生します。別のオプションは、次のものを見つけることです。
find -type f -exec rename -n 's/^[. ]+//' '{}' +
-type f
ファイルに制限されます。もちろん、findの他のオプションを使用することもできます。