LoginSignup
6
5

More than 5 years have passed since last update.

シェルスクリプトで「ls -l」等で列挙されたファイル毎に処理をするときのメモ

Posted at

初歩的ですが、いつも都度調べちゃうので備忘のために。

例えば下の出力結果のうち、所有権が「user」のtxtファイルのみバックアップファイル(.bak)を作りたいとする。
ついでに作成日時をバックアップファイル名に記載する(例:aaa.txt.20170401-1200.bak)

# ls -l
(1)        (2) (3)  (4)   (5) (6) (7) (8)   (9) 
-rw-r--r-- 1   user group 10  Apr 1   00:00 aaa.txt
-rw-r--r-- 1   root group 10  Apr 2   00:00 bbb.txt
-rw-r--r-- 1   user group 10  Apr 2   00:00 ccc.txt

そんなときはこんな感じでシェルスクリプトを書く。

sample.sh
#! /bin/sh

TSTMP=`date "+%Y%m%d-%H%M"`

ls -l | grep user | while read LINE

do
    FILE=`echo ${LINE} | awk '{print $9}'`
    cp -p ${FILE} ${FILE}.${TSTMP}.bak
done

最初に戻って初歩的ですが、いろんなファイルに対して何かする処理をやりたいときになんだかんだで重宝します。
(数100ファイルとかあったらいちいち手を動かしてられないっすもんね・・・)

そんな感じです!

6
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5