ファイル名の先頭からドットとスペースを削除する方法

ファイル名の先頭からドットとスペースを削除する方法

先頭にドットとスペースがあり、最後にドットが欠落している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ツールrenameprename使用

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

これにより、すべての先行点とスペースが削除されます。なります. . . foofoo

通常、*シェル拡張は名前がドットで始まるファイル(隠しファイル)を生成しません。 1つのオプションはを使用することです.*。これにより、2つの特殊アイテム.(現在のディレクトリ)と..(親ディレクトリ)も作成されます。この場合、害はありません。最初のコマンドはそれを無視します(で終わらないjpg)。 2番目のコマンドは名前を変更しようとしますが、エラーが発生します。別のオプションは、次のものを見つけることです。

find -type f -exec rename -n 's/^[. ]+//' '{}' +

-type fファイルに制限されます。もちろん、findの他のオプションを使用することもできます。

おすすめ記事