デジタル土方戦記

量産型文系プログラマの備忘録的なもの

【小ネタ】nヵ月以前に作成された対象のファイルを全て消す

仕事で古いlogファイルを消すときに使ったコマンド

 

【n月以前に作成された対象のファイルを全て消す】

ls -ld [削除対象ディレクトリ]/* | tr -d "月" | grep -iE "*\.log" | awk '{if($6 <=9(※nヵ月の指定)) print $9}' | xargs rm

 

【ls -ld [削除対象ディレクトリ]/*】

削除対象のディレクトリ内のファイルを全て表示

※フルパスを表示させるのがポイント

試しに9月に作ったa.log b.log c.logを消す

f:id:moffu_mofu:20180924210432p:plain

 

あとは"月"が邪魔なので除去して拡張子で絞り込んで

awkで条件を指定して対象だけ削除している

 

現場では西暦も条件指定した(家の端末だと表示されてないけど)

【linuxコマンド関連】備忘録

シンボリックリンク

ファイルやディレクトリに対して別名を付けたもの

Windowのショートカットに近いが異なる

単にショートカットは対象のパスを示したものである

対してシンボリックリンクは実体と同等の振る舞いをすることが可能

 

【/dev/stdin】標準入力

標準入力のシンボリックリンク

「/dev/stdin」は 「/proc/self/fd/0」のシンボリックリンク

「/proc/self/fd/0」は「/dev/pts/0」のシンボリックリンク

f:id:moffu_mofu:20180924201420p:plain

【tmux】仮想端末作成コマンド

接続先サーバの仮想端末を作成することで

一つのコンソールで複数のコンソールを作れたり

突然切断されても再接続することで復帰することができる。

「Ctrl + b」→「c」でウィンドウ複製

「Ctrl + b」→「数字」ウィンドウ選択

「Ctrl + b」→「d」でtmuxから離脱

「Ctrl + b」→「a」でtmuxに再接続

切断するときは「exit」しないと接続情報が残る

※0、1のウィンドウが立ち上がっている画像

f:id:moffu_mofu:20180924202640p:plain

 

 

【 xargs 】コマンドと【 | 】パイプの違い

【 xargs 】コマンドとは

標準出力結果を実行したいコマンドの前に記述することで

結果を引数として受け取りコマンドを実行することができる

例)

コマンド1 | xargs コマンド2

 

【 | 】パイプとは

標準出力結果を次のコマンドに渡す

例)

コマンド1 | コマンド2 

 

xargsの必要性が分からなかったので両者の違いを検証

検証環境

ディレクトリ:

/home/ubuntu/project/sample

配下ファイル

./search.txt

ファイル内容

hoge

hogehoge

 

実行コマンド

1). find . -name 'search.txt' | xargs grep hoge

2). find . -name 'search.txt' | grep hoge

 

結果

f:id:moffu_mofu:20180729223136p:plain

 

2の結果が出てこないのでなにを渡しているのかechoで確認

f:id:moffu_mofu:20180729223859p:plain

catで確認

f:id:moffu_mofu:20180729224116p:plain

1の【xargs】を使った場合は引数として変換して渡しているため

echoでfindの結果のファイル名、catでファイルの内容が出力されているようです。

 

2の【 | 】パイプオンリーのときは引数変換せずに結果を塊として渡しているため

echoで無、catで塊の内容(./search.txt)が出力されているようです。

 

今更感はありますがlinuxコマンドは使わないと忘れますね;;