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

shellbash

目次一覧

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

具体例B


具体例A

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

 閲覧数:102 投稿日: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
2021/9/23 23:43 更新
週間人気ページランキング / 9-16 → 9-22
順位 ページタイトル抜粋 アクセス数
1 Nginx設定。エラーログレベル | Nginx(Webサーバ) 19
2 PHP実行ユーザ設定 / CentOS6 / Apache | PHP(プログラミング言語) 14
3 PHPのmb_send_mail関数でメール送信できない | メール処理システム 13
4 9回目-13.MySQL5.7.21設定 | CentOS 7 2週間無料のお試し期間 9回目(さくらVPS) 12
5 touch コマンド / viコマンド。新規ファイル作成時の違い | Linuxコマンド 8
6 ソースからビルドしたPython 2.7.3 アンインストール失敗 | Python(プログラミング言語) 7
6 FFmpeg 2.8.15 を yum インストール | ソフトウェアスイート 7
6 「設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。」対応 7
6 Python 3.5 アンインストール / yum remove | Python(プログラミング言語) 7
6 manページ日本語表示 | CentOS 7 (CentOS) 7
6 PHPファイルでchmodエラー | PHP(プログラミング言語) 7
7 ABRT により 問題が検出されました | CentOS 7 (CentOS) 6
7 Python 3.6 インストール / make altinstall | Python(プログラミング言語) 6
7 さくらVPS0 6
8 Reached target Shutdown メッセージが表示されたあと、シャットダウンまたは再起動プロセスがハングアップする | CentOS 7 (CentOS) 5
9 PHP Version 7.1.2 php-mecabエクステンション対応 / PHP 7.0.14 からのアップグレード  | MeCab(形態素解析) 4
9 echo と cat の違い 4
9 phpMyAdmin 4.4.3(phpMyAdmin) カテゴリー 4
9 tar: これは tar アーカイブではないようです 4
9 MySQL 5.5 から 5.6 へのアップグレード | MySQL(データベース) 4
2021/9/23 1:01 更新