Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

例えば下の出力結果のうち、所有権が「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ファイルとかあったらいちいち手を動かしてられないっすもんね・・・)

そんな感じです!

shinaK
おもにLinux系でその上になんかのっけてカタカタと。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away