- ベストアンサー
SSHを使ってディレクトリ内のファイルを一括で空にする方法
- SSHのコマンドを使って、ディレクトリ内にある全てのファイルの中身を一括で空にする方法を教えてください。
- 現在は1つずつファイルを空にしているため、量が多くて困っています。ファイルを一括で空にする方法があれば教えてください。
- なお、ファイルの削除ではなく、中身を空にする方法を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
サブディレクトリがないなら、下記でOK cd /DIR tee </dev/null * サブディレクトリがある場合、シンプルには、 find /DIR -type f -exec cp /dev/null {} \; ファイルが数千数万あって、上記で遅いなら、多分これでもOK find /DIR -type f | xargs tee
その他の回答 (3)
- bx2
- ベストアンサー率47% (97/206)
下記コマンドです。 find /DIR/ -type f -exec dd if=/dev/zero of={} count=0 \;
- yambejp
- ベストアンサー率51% (3827/7415)
DIRの中にサブディレクトリがないのであれば sh -c 'for i in `ls` ; do echo "">$i; done' 的なコマンドでいけるかも 知識や経験がない場合いきなりホンチャン環境でやると 致命的なミスを犯しかねないので、テスト環境をつくってやってみてください サブディレクトリがあったり、再帰的な処理が必要な場合は もうすこし工夫が必要
- Wr5
- ベストアンサー率53% (2173/4061)
sshのコマンド…ではなく、接続先のコマンドを…かと思われますが……。 >尚、あくまでファイルを空にするということであって、ファイル自体の削除を行うわけではありませんので宜しくお願いします。m(_ _)m 私ならファイルを削除して、touchコマンドで空ファイルを作成。 というのをシェルスクリプトとかでループで回しますかねぇ。 # 1回しかやらない。というのであればスクリプトのファイルを作成することもなくCUIで処理するかも知れませんけど。 # http://d.hatena.ne.jp/japanrock_pg/20100212/1265972572 まぁ、いろいろあるんですな… まぁ、この場合だとファイルの所有者やパーミッションなども復元する必要があるでしょうから、その辺りの考慮は必要でしょうね。 statコマンドでまとめて取得できる…かな。 touchコマンドで新規ファイル作成したら、chmodコマンドでパーミッションを、chownコマンドでオーナー(uidとgid)を変更。ってところでしょうか。 SELinuxのラベルとかまでついていたらまた手間が増えますかね。 iノード番号が変わるのが嫌。とかなると……私的にはちょっとお手上げかな…。
お礼
有難う御座います。 知識不足のため説明がおかしく申し訳ありません。 色々と方法があるのですね…。 頂いたURL、調べてみたいと思います。 アドバイスの内容を拝見しますと、複数のステップを踏まないと実現は難しい感じの印象を受けました。 何か簡単な定義方法があるのかな?と思っていましたが甘かったです。w もう少し、コマンドやスクリプトについても調べてみたいと思います。
お礼
有難う御座います! まだまだ理解できない記述がありますが、1つ1つ勉強してみたいと思います。 大変感謝申し上げます。 皆様、有難う御座いました!