1

これが私がやりたいことです:

フォルダー名 Archives に何千もの分割 rar アーカイブがあります。ファイルの名前 0001.part1.rar 0002.part2.rar 0003.part3.rar など

  1. 0001.part1.rarを読む
  2. 上記のファイルのプレフィックスに基づいてディレクトリを作成します (例: 0001)
  3. 上記で作成したディレクトリに同じプレフィックスを持つすべてのファイルを移動します。
  4. そのディレクトリ内のファイルを抽出します
  5. そのディレクトリ内のすべてのrarファイルを削除します
  6. テキスト ファイルの名前のリストに基づいて、抽出されたファイルの名前を変更します。
  7. 名前を変更したファイルを異なる引数で rar します。
  8. 名前を変更したファイル (ステップ 6 から) を Done という名前の新しいディレクトリに移動します。
  9. ファイル 0002.part1.rar に進み、手順 2 ~ 8 などを実行します。

追加の方法でcronに組み込むにはどうすればよいですか??? これは一度だけ実行する必要があります...

rar のファイルの最初のセットを抽出した後、次のように変更します。

file.001 
file.002 
file.003 

なども抽出する必要があります。

ステップ 6 の説明:

rar の 2 番目のセット ( file.001 、 file.002 など) を抽出した後、テキスト ファイルの名前のリストに基づいて名前を変更したいと考えています。

例: テキスト ファイルからのファイルのリスト:

0001 - GB Funds.DAT
0002 - US Bonds.DAT
0003 - SG Securities.DAT
0004 - LU Credits.DAT

ステップ 7 の説明:

After renaming the file I want to move it on a new folder called "Done"

ステップ 9 の説明:

Go back to the main folder with all the other archives 
and continue extracting the next set of archives and 
do the same steps from 1 to 8.
4

1 に答える 1

0

次のようなものを含むシェル スクリプトを作成できます。

# foo.sh
set -e
set -u

for i in `find -max-depth 1 -type f -name '*.rar' | sed 's/\.part*\.rar$//' | sort -u`; do
    mkdir $i
    mv $i.part*rar $i
    cd $i
    unrar x $i.part1.rar
    DST=`grep $i ../rename.txt | sed 's/^[0-9]\+ - //'`
    mv $i "$DST"
    # and so on, rar it together again, move it done directory etc.
    cd ..
done

次の方法で実行します。

bash foo.sh

6./8./9 を明確にする必要があります。

一度だけ実行したいので、なぜcron経由で実行したいのかわかりません。atは、1 回限りのジョブを実行するか、画面セッションで実行するように設計されています。

ジョブ全体を開始する前に、コレクションから 1 ~ 3 個のファイルと最終的なスクリプトを使用していくつかのテストを行うことをお勧めします。

于 2010-08-29T18:49:02.430 に答える