ファイルを調べて削除または圧縮するためのシェルスクリプト


-4

/ home / usernameディレクトリツリーに100Kを超えるすべてのファイルを1つずつリストします。ユーザーにファイルを削除または圧縮するオプションを提供してから、次のファイルを表示します。削除されたすべてのファイルの名前と削除時間をログファイルに書き込みます。

誰も私がこれを解決するのを手伝ってもらえますか?


6
これまでに何を試しましたか?あなたが何を学ぶんだろう意味あなたのためのすべてのハードワークを行うために私たちを求めているようだ...
Kinnectus

さらに、スクリプトは非常に非効率的です。ユーザーが何百ものファイルを持っている場合はどうなりますか...すべてのファイルを通過すると予想されますか?
Kinnectus

問題は、ユーザーに一度にファイルを表示する方法がわからないため、ユーザーがファイルを圧縮または削除することを決定することです。私が手に入れたのはこれだけです。S:-type F -size + 100Kああ見つけ、それが宿題だ、教授は私たちに、この指示を出したが、私は実際にどのように行うのか分からない
ホセ・マヌエルアラルコン

4
私たちはあなたのために宿題をするつもりはありません。あなたは自分で物事を聞き、研究し、試してみるためにより多くの時間を費やす必要がある。私たちはそのようなサイトではありません。ヒント:これfindは良いスタートですが、検索するディレクトリのセットが与えられています...スキャンしたいユーザーのホームディレクトリを取得する良いスタートではありませんか?
Kinnectus

1
はい、あなたは尋ねましたが、これまでに試したことや、うまくいくと思うことなどの証拠を示していませんでした。
Kinnectus 14年

回答:


1

開始するための(やや非効率的な)擬似コードを次に示します。

for filename in (recurse through all files)
  skip if size(filename) < 100K
  display filename
  response =  ask user what they want to do
  if response == "delete"
    delete filename
    write filename + current time to logfile
  else if response == "compress"
    compress filename

100Kより小さい場合でもすべてのファイルを処理するため、非効率的です。ループのfind代わりに使用して最適化することは、forあなたにとっての課題です。

さて、バッシュで簡単に設定することで、ファイルを再帰することができますshopt -s globstarshopt -s nullglob、その後、使用しました**/*

for file in /home/username/**/*; do
  echo "$file"
done

残りは本当にシンプルなBashスクリプトです。コマンドの例(「ユーザーからの入力の取得」、「ファイルへの書き込み」、「ファイルの圧縮」)のWeb検索を行うと、インターネット上に多くのリソースが見つかります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.