CentOSで「指定ディレクトリ下層に複数存在する指定ディレクトリ」内にある全ファイルを削除するシェルスクリプト

shellbash

目次一覧

 状態:-  閲覧数:136  投稿日:2018-08-14  更新日:2019-12-03
具体例A

具体例B


具体例A

 閲覧数:12 投稿日:2019-12-03 更新日:2019-12-03 

目的


「/virtual/ibj/public_html/ディレクトリ下層に複数存在する/amazon/cache/ディレクトリ内」にある全ファイルを削除したい
2010/2/11 18:27

シェルスクリプト


▼cron_amazoncache.sh
#!/bin/sh

#SHELL
cd /virtual/ibj/public_html/
find . -type f -regex '.*/amazon/cache/[^/]*' -exec rm -f \{\} \;
exit


具体例B

 閲覧数:13 投稿日:2019-12-03 更新日:2019-12-03 

目的


「/var/www/xxxx/all-tweets-history.0so.tokyo/ディレクトリ下層に複数存在する/data/ディレクトリ内」にある全ファイルを削除したい
2019/12/3

前提環境


all-tweets-history.0so.tokyo/
┣1/
┃┣/data/
┃┗index.php

┣2/
┃┣/data/
┃┗index.php

┣3/
┃┣/data/
┃┗index.php

┣4/
┃┣/data/
┃┗index.php

┣5/
┃┣/data/
┃┗index.php

┗index.php


最初に、findコマンドの挙動確認


具体的には、対象ファイルを抽出できるか、試してみる
$ cd /var/www/xxxx/all-tweets-history.0so.tokyo
$ find . -type f -regex '.*/data/[^/]*'
./1/data/20191126021914tweet.js
./1/data/20191130002258tweet.js
./2/data/20191124200301tweet.js
./3/data/20191012132711tweet.js
./3/data/20191129175319tweet2.js
./4/data/20191201094327tweet.js
./4/data/20191201095055tweet.js
./4/data/20191201101112tweet.js
./4/data/20191201120829tweet.js
./4/data/20191201121740tweet.js
./4/data/20191201174852tweet.js
./4/data/20191202145957tweet.js
./4/data/20191202174503tweet.js
./4/data/20191202231323tweet.js
./4/data/20191202234719tweet.js
./4/data/20191203002832tweet.js
./4/data/20191203011500tweet.js
./4/data/20191203011637tweet.js
./5/data/20191116224117tweet.js
./5/data/20191116135534tweet.js


次に、削除実行してみる


「-exec {} ; より xargs が推奨みたい」とのことなので、修正した上で削除コマンドを実行してみる
find の -exec では 1つのファイルに対して 1回コマンドを実行するが、
xargs ならカーネルが許す限り長いコマンドを作って実行するため、
-exec より xargs の方が fork&exec の回数が少なくなって効率的なはず

findコマンドで-execオプションを使用する時の最後の「{} ;」ってなんだっけ?
$ find . -type f -regex '.*/data/[^/]*' | xargs rm -f \{\} \;

結果は?
・成功
・各/data/ディレクトリ内にあるファイルが全て削除された

最後に、シェルスクリプトとして実行してみる


▼delete-allfiles-datadirectory.sh
#!/bin/sh

#SHELL
cd /var/www/xxxx/all-tweets-history.0so.tokyo
find . -type f -regex '.*/data/[^/]*' | xargs rm -f \{\} \;
exit

$ sh /var/www/xxxx/cron/delete-allfiles-datadirectory.sh

結果は?
・成功
・各/data/ディレクトリ内にあるファイルが全て削除された


シェルスクリプト


bash



類似度ページランキング
順位 ページタイトル抜粋
1 CentOSで、指定ディレクトリ以下の「ファイル内容」を全文置換 57
2 指定ディレクトリ内の「特定拡張子のファイル」のみ削除 / find の -delete オプションを使用 43
3 CentOSで、指定ディレクトリ以下の「ディレクトリ名」の置換リネーム、「ファイル名」の置換リネーム、「ファイル内容」の全文置換 40
4 カレントディレクトリ配下の「指定拡張子ファイル」内に「指定文字列」が含まれているものを検索する 39
5 CentOS7再起動時に、/run 直下に作成したディレクトリを削除しないようにする 39
6 CentOS7 で設定ファイルのチェック後、Nginx起動 33
7 「CentOS7」で「cron」を新規設定する 33
8 パスの最後のディレクトリ名・ファイル名を抽出 31
9 PHP5をインストールしているCentOSで、PHP7も使用したい 29
10 CentOS7コマンドは「/usr/bin/」もしくは「/usr/sbin/」内に格納されているファイルを実行している 28
11 ファイル拡張子などで条件を絞って全置換するためには、「grep」ではなく「find」を使用 28
12 「さくらVPS」で、「CentOS6」を「CentOS7」へ変更するためには? 27
13 ディレクトリへ設定する特殊なアクセス権 27
14 「cron × Cent OS7」でよく使用するコマンド 26
15 Xdebugインストール / CentOS 6 25
16 Windows/コマンドで、ディレクトリ毎削除 25
17 「CentOS 7」へ「ChromeDriver 79.0.3945.36」を新規インストール 25
18 「CentOS 7」へ「Google Chrome 76.0.3809.132」を新規インストール 25
19 PHP7.1 インストール失敗 / CentOS 6 24
20 Let's Encrypt。証明書取得後、複数ホストを確認するためには? 24
2020/10/30 7:25 更新
週間人気ページランキング / 10-23 → 10-29
順位 ページタイトル抜粋 アクセス数
1 FFmpeg 2.8.15 を yum インストール | ソフトウェアスイート 16
2 Python 3.5 アンインストール / yum remove | Python(プログラミング言語) 11
2 Reached target Shutdown メッセージが表示されたあと、シャットダウンまたは再起動プロセスがハングアップする | CentOS 7 (CentOS) 11
3 それまで受信できていたcron経由によるメールを、正常受信できなくなった原因 | cron(Linuxコマンド) 9
4 ImageMagick 6.7.2.7-2.el6 を yum アンインストール / ImageMagick 6.8.8-9 を make アンインストール | ImageMagick(ソフトウェアスイート) 7
5 tar | Linuxコマンド 5
6 4回目-3.SSH接続の設定変更方法 | CentOS 7 2週間無料のお試し期間 4回目(さくらVPS) 4
6 Nginx設定。エラーログレベル | Nginx(Webサーバ) 4
7 make: *** ターゲット `uninstall' を make するルールがありません. 中止. 3
7 Bearer Token / RFC 6750 | HTTP(通信プロトコル) 3
8 「指定グループ」から「指定ユーザーアカウント」を削除。$ sudo gpasswd -d ユーザーアカウント名 グループ名; 2
8 tar: これは tar アーカイブではないようです 2
8 さくらのVPSのsshログインが遅い | RLogin(ターミナルエミュレータ) 2
8 9回目-14.phpMyAdmin 4.7.9 インストール&設定 | CentOS 7 2週間無料のお試し期間 9回目(さくらVPS) 2
8 今回の直接の原因と思われる個所 / 今回のエラー原因 / 今回のエラー対応 2
8 SSHのポート番号をデフォルトの22番から☆☆へ変更 2
8 8回目-11.MySQL5.7.21インストール | CentOS 7 2週間無料のお試し期間 8回目(さくらVPS) 2
8 phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています 2
8 Session Storage | WebStorage(ブラウザにデータを保存する仕組み) 2
8 HTTPレスポンスヘッダ | HTTP(通信プロトコル) 2
2020/10/30 1:03 更新