社員ブログ
HOME  社員ブログ
ホーム > Linux, 社員:kijitoraneko > macでファイル名をsedを使って一括で変更する

macでファイル名をsedを使って一括で変更する

2014年01月21日 20時25分59秒

kijitoranekoです。

こんにちは。

いろいろやりかたはありますが、

せっかくなので、sedを使ってワンラインでやってみましょう。

ここでは以下の様なファイル構成のディレクトリで、

.shファイル全てを.BKを付加して、BKディレクトリを作成してそこにコピーします。

$ ls -la
total 0
drwxr-xr-x 5 teru1 staff 170 1 21 19:46 .
drwx——+ 16 teru1 staff 544 1 20 21:56 ..
-rw-r–r– 1 teru1 staff 0 1 21 19:09 aaa.sh
-rw-r–r– 1 teru1 staff 0 1 21 19:09 bbb.sh
-rw-r–r– 1 teru1 staff 0 1 21 19:09 ccc.sh

こんな感じで実行します。

$ mkdir BK; ls -1 *.sh | sed ‘s/.*.sh/cp & `pwd`\/BK\/&.BK/’ > backupExec; sh backupExec && rm -f backupExec

説明します。まず、mkdirでディレクトリを作成します。

次にlsでshファイルの一覧を出して、そのままパイプでsedの標準入力につなぎます。

sedはその入力を一行ずつ処理します。

一つ一つのファイル名をcpコマンドでBKディレクトリにコピーするというコマンドに変換していき、最終行まで終了したら、

リダイレクトでbackupExecというファイルに出力します。

そのbackupExecファイルをシェルとして実行し、ここで実際のコピーが行われてます。

その後で、rmコマンドで、backupExecファイルは削除しています。

結果です。

$ ls -la
total 0
drwxr-xr-x 6 teru1 staff 204 1 21 19:56 .
drwxr-xr-x 8 teru1 staff 272 1 21 19:52 ..
drwxr-xr-x 5 teru1 staff 170 1 21 19:56 BK
-rw-r–r– 1 teru1 staff 0 1 21 19:52 aaa.sh
-rw-r–r– 1 teru1 staff 0 1 21 19:52 bbb.sh
-rw-r–r– 1 teru1 staff 0 1 21 19:52 ccc.sh

BKディレクトリができています。

中を見てみます。

$ ls -la BK
total 0
drwxr-xr-x 5 teru1 staff 170 1 21 19:56 .
drwxr-xr-x 6 teru1 staff 204 1 21 19:56 ..
-rw-r–r– 1 teru1 staff 0 1 21 19:56 aaa.sh.BK
-rw-r–r– 1 teru1 staff 0 1 21 19:56 bbb.sh.BK
-rw-r–r– 1 teru1 staff 0 1 21 19:56 ccc.sh.BK

できました。

これでファイル数が100だろうが1000だろうが一発ですね。

くれぐれもGUIでコピーして、リネームとかやめましょうね。

 

コード部分が慣れないので、うまく書けませんでした。

見づらい方は、こちらもあわせてごらんください。すいません。

 

ではまた。

 

Linux, 社員:kijitoraneko

  1. コメントはまだありません
  1. トラックバックはまだありません