「linux」タグアーカイブ

【Linux】findコマンドで空のディレクトリを削除する際に、起点のディレクトリを残す。

システム運用の一環で、一時フォルダにあるごみを削除することになりました。

findコマンドで空ディレクトリを削除できるとわかったのでやってみたが、配下のディレクトリがすべて削除されると、ターゲットディレクトリまで削除の対象になってしまった。↓

find <ターゲットディレクトリ> -type d -depth -empty -delete -print

【対処方法】

調べた結果findコマンドのmindepthというオプションが使えることが分かった。

-mindepth levels
検索開始ポイントから levels で示される階層数のディレクトリに至るまでは、 テストやアクションを適用しません (levels は負ではない整数です。)。 -mindepth 1 を指定すると、 検索開始ポイントを除いたファイルを、 すべて処理することになります。

https://linuxjm.osdn.jp/html/GNU_findutils/man1/find.1.html

つまり、-mindepthに1をセットすることで、検索開始ポイントは処理の対象外にできるということで、以下のようにコマンドを変更しました。

【改良後のコマンド】
find <ターゲットディレクトリ> -mindepth 1 -type d -depth -empty -delete -print

実行してみると以下のようにターゲットディレクトリは維持されたまま、空ディレクトリを掃除することができた。

【実行前】
./
└─target
   ├─folder_1
    │
    └─folder_2

【実行後】
./
└─target

うまくいったぞ!(v´∀`v)


Linuxでハイフンから始まるディレクトリ、ファイルを削除する

LinuxやUnixで削除コマンド rm を実行するときに、ファイル名やディレクトリ名の先頭にハイフン(-)がついていると、普通に実行するとコマンドエラーになってしまいます。

ファイル名の先頭にあるハイフンがコマンドのオプションとして認識されてしまい、「illegal option」(不正なオプション)のエラーとなってしまいます。

こういったファイルを削除するときに、GUI操作やWinSCPなどのツールで削除するのもよいのですが、環境によってはランレベルのOS設定が変えられなかったりします。

対策:削除対象のファイル名、ディレクトリ名の先頭に「./」を付与する

考えてみれば、大したことないことなのですが、疲れていたり、プレッシャーのかかる環境下で作業していると、こんな簡単なことも気が付かない ( ;´_ゝ`) 。まだまだ修行が足りないな。。。


LinuxのコマンドラインでグローバルIPアドレスを確認する

サーバを外部API、サービスに接続する際、大抵の場合接続先のサービスはIPアドレスの制限を掛けています。(特に開発環境は)

そんな時に、自社のサーバからの接続を許可してもらうために、接続先の会社にグローバルIPアドレスを通知する必要があります。

そんなときに、LinuxサーバのコマンドラインからサーバのグローバルIPアドレス(=外部に出るときのIPアドレス)を調べる方法です。

curl http://httpbin.org/ip
curl ifconfig.me
curl inet-ip.info

上記のコマンドのどれでもいいので、実行するとLinuxサーバのグローバルIPアドレスを返してくれます。こんな感じに↓

% curl inet-ip.info
210.XXX.XXX.XX

特に自分たちがインフラの構築を担当してない場合、インフラ担当とかに聞くぐらいならこの方法で調べちゃったほうが早いです。(◎´・ω・)