2016-11-29 4 views
0

私は、ソートされていないフォルダから新しく作成されたディレクトリにさまざまなファイルタイプをソートして処理する優れた対話型スクリプトを持っています。スクリプトを使用して元に戻す操作を実行します。

私は小さなスクリプトを書いたり、実行されたスクリプトを元に戻したり元に戻したりできるように、必要に応じて元のソートの状態に戻すことができるように、小さなスクリプトを書くか、あなたが実行している各アクションの逆のアクションとスクリプトを生成したい場合は

#!/bin/bash 
read -p "Good Morning, Please enter your file type name for sorting [ENTER]:" all_extensions 
if cd /Users/christopherdorman/desktop 
    then while read extension 
     do destination="folder$extension" 
     mkdir -p "$destination" 
     mv -v unsorted/*."$extension" "$destination" 
     done <<< "${all_extensions// /$'\n'}" 
     mkdir -p foldermisc 
     if mv -v unsorted/* "foldermisc" 
     then echo "Good News, the rest of Your files have been successfully processed" 
     fi 
    for i in folder*/; do 
     ls -S "$i" > "${i}filelist" 
     cat "${i}filelist" >> ~/desktop/summary.txt 
    done 
fi 
+0

非常に具体的な理由がない限り、 '-r'引数を' read'に使用することを習得することを検討してください。また、個々の 'cat'コマンドではなく、'〜 '/ desktop/summary.txt'にリダイレクトすることを考えてください。同じ出力ファイルを何度も何度も再オープンする必要はありません。 –

+0

ありがとうございました –

+0

Hmm。実際、名前の変更に関しては、すべてが同じファイルシステム上にある場合は、元の構造のハードリンクツリーバックアップを作成するだけで済みます。これは、すべてのPOSIX準拠のファイルシステムで動作します。新しい構造を調べて結果が気に入ったら、バックアップを削除してください。ハードリンクの魔法のため、実際のストレージブロックを割り当てる必要はありません(ディレクトリオブジェクト自体を除いて)。これは、リバーススクリプトアプローチが修正できない状況(複数のソースファイルの名前を同じ宛先名に変更するなど)に対しても保護します。 –

答えて

1

eval -safe的に名前を引用するprintf %qを使用しています。例:

+0

チャールズ私は、この全体の対話型スクリプトとマンモスの並べ替えを一度に解く必要があった場合、これをどうやって行うのですか?これは端末でこの逆のアクションを呼び出す特別なコマンドですか?尊重 –

+0

いいえ、そのような特別なコマンドはありません。まあ、いくつかのファイルシステム(zfs、btrfsなど)はスナップショットをサポートしているので、前回の '/ home'のバージョンに効率的にアクセスできるようになりますが、これはシステムに大きく依存します。 –

+0

ですので、unwind/inverseアクションは、私のための段階的な処理の一種で管理されます。 –

関連する問題