だから私はUbuntuコンピュータに77のサブフォルダがあるディレクトリを持っています。各フォルダにはさまざまなトレントファイルが含まれています。サブフォルダには合計427の急流が含まれています。サブフォルダから親ディレクトリにすべて移動したいです。
ゲインは何ですか?一部のファイルの名前はまったく同じです。移動後に名前がどのように変更されたかは重要ではありませんが、これを修正する最も簡単な方法は、abc.torrent ---> abc1.torrent、abc2.torrentなど(多くの場合)です。
すべてのファイルを親ディレクトリに抽出する次のコードが見つかりました。
find . -mindepth 2 -type f -print -exec mv {} . \;
--backupを使用して同じ名前のファイルを回復できることを知っています。だから私はコードに以下を追加しました。
find . -mindepth 2 -type f -print -exec mv --backup=numbered {} . \;
ところで実行してみると427個ではなく167個のファイルだけ移動するようになりました。
また、-iを使用して各質問を個別に尋ねることができることも知っていますが、時間はかなりかかります。これを自動化する方法はありますか?
答え1
私が理解したところによると、2番目の発見はうまくいくでしょう。この発見をパイプすると、wc -l
期待どおりに427が返されますか?
同じことを行う高速bashスクリプトは次のとおりです。
#!/bin/bash
for torrent in $(find /path/to/target/dir -mindepth 2 -type f); do
count=0
# get filename and remove any spaces
filename=$(echo $torrent | tr -d ' ' | awk -F '/' '{print $NF}')
# if it exists in the current dir, name it $count-$filename
while [ -f /path/to/target/dir/$filename ]; do
((count++))
filename=$count-$filename
done
# do the move
mv "$torrent" /path/to/target/dir/$filename
done