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

shellbash

目次一覧

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

具体例B


具体例A

 閲覧数:158 投稿日: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

 閲覧数:182 投稿日: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
2022/8/13 21:11 更新
週間人気ページランキング / 8-6 → 8-12
順位 ページタイトル抜粋 アクセス数
1 phpの設定ファイルをphp.ini から分離させても良いの? 19
2 Nginx設定。エラーログレベル | Nginx(Webサーバ) 16
3 サーバサイドJavaScriptのフレームワーク カテゴリー 15
4 PHP実行ユーザ設定 / CentOS6 / Apache | PHP(プログラミング言語) 12
4 PHPのmb_send_mail関数でメール送信できない | メール処理システム 12
5 さくらのVPSのsshログインが遅い | RLogin(ターミナルエミュレータ) 10
5 「RLogin」で文字化けするようになった場合は、オプション設定 - フォント - 文字セット -「UTF-8」を選択します。  | RLogin(ターミナルエミュレータ) 10
5 echo と cat の違い 10
5 さくらVPS0 10
5 ABRT により 問題が検出されました | CentOS 7 (CentOS) 10
6 ImageMagick と imagick の違い | ImageMagick(ソフトウェアスイート) 9
6 ImageMagick 6.7.2.7-2.el6 を yum アンインストール / ImageMagick 6.8.8-9 を make アンインストール | ImageMagick(ソフトウェアスイート) 9
6 touch コマンド / viコマンド。新規ファイル作成時の違い | Linuxコマンド 9
6 HTTPリクエスト ⇔ HTTPレスポンス / RFC7230 | HTTP(通信プロトコル) 9
7 Python 3.5 アンインストール / yum remove | Python(プログラミング言語) 8
8 phpMyAdmin-4.6.3 インストール / phpMyAdmin4.5.5.1からのアップデート -2- | phpMyAdmin 4.6.3(phpMyAdmin) 6
8 499 (Request has been forbidden by antivirus) | HTTP(通信プロトコル) 6
8 mailxとは? / インストール済か確認 / mailコマンドの実体はmailxコマンド 6
9 5回目-10.locale | CentOS 7 2週間無料のお試し期間 5回目(さくらVPS) 5
9 Chrome Networkタブ / 現在の nginx エラー log_level 設定を確認してみる / php-fpm.conf の log_level を設定してみる 5
2022/8/13 1:01 更新