圧縮ファイルを繰り返して別のディレクトリに移動するには?

圧縮ファイルを繰り返して別のディレクトリに移動するには?

動的ファイル名に基づいてファイルを圧縮したいと思います。私のファイル名は:ClientNames

CODE, Client Name
1111, ABC
1231, XYZ
1211, APT
1561, OPT

私のファイル名はMAA.TRD.1111.2016.20.09.csv(ファイル名、コード、年、日付、月.csv)ディレクトリに異なるコードを持つ複数のファイルがあります。

コードを確認する必要があるたびに ClientNames ファイルからクライアント名を取得し、ファイルを名前で圧縮します。 - (ファイル名: MAA.TRD.1111.2016.20.09.csv zip ファイル名: ABC.20162009.csv; MAA.TRD . 1211.2016 .20.09.csv zip ファイル名は APT.20162009.csv など)

ファイルを一つずつ入れて圧縮して名前を変更するループをデザインしたいと思います。

私のコードは次のとおりです

FILES=MAA.TRD*.csv

for file in ${FILES}
    do
    ls -lrt MAA.TRD*.csv | cut -d '.' -f 3 > $SCRIPT/LogfileCODE
    cd $SCRIPT
    DATE=`date`
    Filename=`grep -Fwf $LogfileCODE $ClientNames | cut -d ',' -f 2`
    ZIPFILENAME="${Filename}_${DATE}"         
    echo " Zipping of file is starting "
    zip -j ${ZIPFILENAME}-$DATE.zip $file           
done 

しかし、私のforループはすべてのファイルを1つにまとめます。助けてください。

ベストアンサー1

1  DATE=$(date '+%Y%m%d')
2
3  for FILE in MAA.TRD*.csv
4  do
5      CODE=$(echo $FILE | cut -d. -f3)
6      CLIENT=$(grep -w $CODE ClientNames | sed 's/^.*, //')
7      NEWFILE=$CLIENT.$DATE.csv
8      mv $FILE $NEWFILE
9      echo " Zipping of $NEWFILE is starting "
10     zip -j $NEWFILE.zip $NEWFILE           
11 done

1 - 空白のない形式で日付を設定し、必要に応じて自由に調整します。

3 - 単にディレクトリ内のすべてのファイルを繰り返します。 (これにより、説明された命名規則に一致するすべてのファイルに展開されます。)

5 - ファイル名からコードを取得する

6 - 現在のファイルのコードに基づいてClientNamesからCLIENTを取得します(カンマの後のスペースを削除するなど、ここでsedを使用します。cut -d, -f2実際にスペースがなくても大丈夫です)。これは ClientNames が CWD にあると仮定します。必要に応じてパス

7 - 後で再利用できるように新しいファイル名を構成する

8 - ファイル名を新しい名前に変更します。

10 - Zipファイル(zipファイルが.csvで終わることを望まない)

おすすめ記事