プロが教える店舗&オフィスのセキュリティ対策術

SSHのコマンドを使って、ディレクトリ内にある全てのファイルの中身を空っぽにしたいのですがどのようなコマンドを使えばよいのでしょうか?

現在仮に…

/DIR/というディレクトリがあり、中には
abc.log.1
abc.log.2
abc.log.3
abc.log.4
abc.log.5


とあります。

現在は、

: > abc.log.1

といった具合に、1つ1つ空っぽにしているのですが量が多いので困っております。
一度に/DIR/の中身のファイル全てを空にする方法がありましたらアドバイス頂けると助かります。

尚、あくまでファイルを空にするということであって、ファイル自体の削除を行うわけではありませんので宜しくお願いします。m(_ _)m

A 回答 (4件)

サブディレクトリがないなら、下記でOK


cd /DIR
tee </dev/null *

サブディレクトリがある場合、シンプルには、

find /DIR -type f -exec cp /dev/null {} \;

ファイルが数千数万あって、上記で遅いなら、多分これでもOK

find /DIR -type f | xargs tee
    • good
    • 0
この回答へのお礼

有難う御座います!

まだまだ理解できない記述がありますが、1つ1つ勉強してみたいと思います。
大変感謝申し上げます。

皆様、有難う御座いました!

お礼日時:2014/05/23 10:52

下記コマンドです。



find /DIR/ -type f -exec dd if=/dev/zero of={} count=0 \;
    • good
    • 0

DIRの中にサブディレクトリがないのであれば



sh -c 'for i in `ls` ; do echo "">$i; done'

的なコマンドでいけるかも
知識や経験がない場合いきなりホンチャン環境でやると
致命的なミスを犯しかねないので、テスト環境をつくってやってみてください

サブディレクトリがあったり、再帰的な処理が必要な場合は
もうすこし工夫が必要
    • good
    • 0

sshのコマンド…ではなく、接続先のコマンドを…かと思われますが……。



>尚、あくまでファイルを空にするということであって、ファイル自体の削除を行うわけではありませんので宜しくお願いします。m(_ _)m

私ならファイルを削除して、touchコマンドで空ファイルを作成。
というのをシェルスクリプトとかでループで回しますかねぇ。
# 1回しかやらない。というのであればスクリプトのファイルを作成することもなくCUIで処理するかも知れませんけど。
# http://d.hatena.ne.jp/japanrock_pg/20100212/1265 … まぁ、いろいろあるんですな…

まぁ、この場合だとファイルの所有者やパーミッションなども復元する必要があるでしょうから、その辺りの考慮は必要でしょうね。
statコマンドでまとめて取得できる…かな。
touchコマンドで新規ファイル作成したら、chmodコマンドでパーミッションを、chownコマンドでオーナー(uidとgid)を変更。ってところでしょうか。
SELinuxのラベルとかまでついていたらまた手間が増えますかね。

iノード番号が変わるのが嫌。とかなると……私的にはちょっとお手上げかな…。
    • good
    • 0
この回答へのお礼

有難う御座います。

知識不足のため説明がおかしく申し訳ありません。

色々と方法があるのですね…。
頂いたURL、調べてみたいと思います。

アドバイスの内容を拝見しますと、複数のステップを踏まないと実現は難しい感じの印象を受けました。

何か簡単な定義方法があるのかな?と思っていましたが甘かったです。w

もう少し、コマンドやスクリプトについても調べてみたいと思います。

お礼日時:2014/05/22 13:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!