構造を作成し、ファイルをディレクトリに移動してソートするスクリプトをどのように作成できますか?

構造を作成し、ファイルをディレクトリに移動してソートするスクリプトをどのように作成できますか?

最初の行がすべての日付であるファイルがたくさんあります。すべて同じ最初の2文字「ff」で始まります。すべてのファイルの最初の行を取得し、ファイルが生成されたディレクトリでソートするスクリプトを作成する必要があります。

たとえば、1つのファイルには次のものが含まれます。

猫ファイル

日付全体を抽出し、すべてのファイルを年ディレクトリに移動してから、毎月のサブディレクトリと日付別のサブディレクトリに移動する必要があります。これまでは年ごとにファイルを移動するスクリプトがあります。 -p 機能が使えると言っていましたが、実はUNIXを3日目使っていて今は混乱しています。

スクリプト

答え1

マンページを読んでください。

  • 男1すべて
  • 人1 mkdir

ヒント:

  • cut -f1,2,3複数のフィールドを出力できます。
  • cut --output-delimiter=CHARデフォルトでは、入力区切り文字として使用される出力区切り文字をオーバーライドできます。
  • mkdir -p a/b/cディレクトリ階層の作成//、すなわち。サブディレクトリですそしてサブディレクトリです

答え2

解決策は次のとおりです。

outputPath='/path/to/output/'
for file in $(find ~/filesToSort/ -type f -name "ff*")
do
    firstLine=$(head -n 1 $file)
    datePath="${firstLine//-//}"
    mkdir -p $outputPath$datePath
    mv $file $outputPath$datePath
done

デフォルトでは、このスクリプトの機能は次のとおりです。

  1. すべてのファイルを一覧表示
  2. ファイルの最初の行を文字列として取得します。
  3. パスを生成するには、文字列の「-」を「/」に置き換えます。
  4. パスの作成
  5. 新しく作成したパスにファイルを移動します。

最初の行が必要なテンプレートと一致することを確認するためにテストを追加できます。

関連情報