共有ドライブをリモートで同期させるためにsyncthingを使用していた3つのOSXマシンセットアップがあります。誰かが間違いを犯し、多くのファイルが改名されました。非常に大量のファイルを含むファイル管理のためのスクリプティング
このドライブでは、サイズが0KBのファイル(たとえば、file.jpg
)と実際のサイズが file.sync-confilct201705-4528.jpg
の別のファイルがある状況があります。ドライブ全体を再帰的に検索し、sync-conflict文字列を含むファイルが見つかったら、 'sync-conflict'文字列がない同じファイルが0KBのサイズであるかどうかを確認します。存在する場合は、0KBファイルを上書きするためにsync-conflictファイルの名前を変更する必要があります。
私はbashスクリプトまたはPerlスクリプトを使ってこれに取り組むことを検討しました。 bashの使用私は、-regexで 'find'コマンドを使用するだけで、私を始められると思いますが、結果を処理して次の検索テストを実行する方法はわかりません。私は勉強してそれに取り組んでいます。
Perlにも同じ問題があります。 File :: Findを使って最初のステップを進めることができます:ファイルをフィルタリングするためにregexを使う必要があるものを見つけて選択しますが、同じディレクトリにある元のファイルを見つける次のステップに進んでいます必要なファイル移動機能を実行します。
これらの両方のケースでは、私はそれを理解する時間を置いていきたいと思いますが、警告がどうなるのだろうか?これらのシナリオの両方で、例外なく多数のファイルを再帰的に処理できますか?おそらく誰かがお勧めできるより良いアプローチはありますか?
私の最初の提案は、何かを始める前にバックアップをとることです。 –
ゼロサイズのファイルを最初に検索し、対応する競合ファイルがあるかどうかを確認する方が簡単でしょう。それは問題を完全に解決するわけではないかもしれませんが、良い最初のステップになります。次に、競合ファイルが残っている場合は、競合ファイルが一致する場合は内容を比較し、競合ファイルを削除します。 –