web-dev-qa-db-ja.com

コマンドラインを使用してファイル名から文字を削除する方法は?

名前の変更が必要なファイルがたくさんありますが、コマンドラインだけでスクリプトを作成したくありません。

..gifの間の最後の数字を削除する必要があります。

22771786_01.204.gif  
22771786_02.203.gif  
22771786_03.10.gif  
22771786_04.56.gif

このようにするには:

22771786_01.gif  
22771786_02.gif  
22771786_03.gif  
22771786_04.gif
4
a.v

これを実現するには、forループとbash拡張を使用します。ファイルを含むディレクトリに既にいる場合:

for f in ./*; do mv "$f" "${f%.*.gif}.gif" ; done

ファイルを含むディレクトリの名前が/ home/gifstore /の場合:

for f in /home/gifstore/*; do mv "$f" "${f%.*.gif}.gif" ; done

${f...}は、fという名前の変数に保存した各ファイル名の展開を実行します。ファイル名の展開の%は、変数の末尾から次のパターンの最短一致を削除することを意味します。パターンは.*.gifです。これは、..gifの間の任意の量の文字を意味します。最後に、リテラル文字列.gifを展開の外側に追加して新しいファイル名を作成し、mvコマンドに依存してファイルを移動します。

これは、.で始まる隠しファイルでは機能しません。

7
Arronical

私は個人的に ranger をこれらのタイプのものに使うことを楽しんでいます。ナビゲーションなどにVimキーバインドを使用するため、vimに慣れていない場合は、混乱/困難になる可能性があります。ただし、すでにVimに精通している場合は、簡単な作業です。

ステップ1

rangerをインストールします。 Vimプラグイン としてインストールするか、 website から.tar.gzファイルをダウンロードするだけです。

ステップ2

レンジャーを実行し、名前を変更するファイルがあるディレクトリに移動します。すべての.gifを1つのディレクトリに置くことをお勧めします。名前を変更するファイル以外のファイルがないことを確認してください。

ステップ3

vを押して、すべてのファイルを選択します

ステップ4

:bulkrenameと入力し、Enterを押します

ステップ5

Vimマクロを使用して、必要な変更を記録します。したがって、例として、ファイルの最初の行から開始した場合、次のコマンドを使用します。

q a(これは「a」という名前のマクロを開始します)

0f.de(行の先頭にカーソルを移動し、最初の「。」を見つけてから、gifの前の2番目の「。」の前の最後の文字まで削除します)

q(マクロの記録を停止する)

ステップ6

2行目に移動し、カーソルを行の先頭(j0)に移動し、:2,$norm! @aと入力します

これにより、作成したばかりのマクロ( "a"という名前)が2行目からファイルの最後まで実行されます。

ステップ7

:wqで保存して終了してから、:wqでもう一度変更を確認します。


すべてがうまくいけば、すべてのファイルの名前を変更する必要があります。以前にVimを使用したことがない場合は、ファイルの名前を変更するだけでVimを学ぶ必要がないように、別の回答を使用することをお勧めします。 Vimを使用することを好みます。これは、一括名前変更の際にこれが私の選択方法です。

1
RandomlyRainy