2016-10-26 1 views
1

ファイルのすべてのフォルダを何らかの形で同じ名前の新しいフォルダに移動したLinuxサーバーのバックアップに問題がありました。すべてのファイルを元の場所に戻したいと思います。多くのファイルには、名前にスペースが含まれています。すべてのファイルを1つ上のレベルに移動

オリジナルのディレクトリ構造:

backup/folder 1/file 1 
backup/folder 1/file 2 
backup/folder 1/subfolder/file A 
backup/folder 2/file 1 
... 

不正なディレクトリ構造:私はサブフォルダ内のファイルは、フォルダ1に移動する必要はありませんが、私はサブフォルダ自体をしたいですか

backup/folder 1/folder 1/file 1 
backup/folder 1/folder 1/file 2 
backup/folder 1/folder 1/subfolder/file A 
backup/folder 2/folder 2/file 1 
... 

注意1つ上のレベルに移動します。

私はこれに似たいくつかのコマンドを試しましたが、これに関係するいくつかのスレッドに基づいていますが、動作させられていない代わりにファイルを現在のディレクトリに移動しようとします。私は間違って何をしていますか?

find。 -mindepth 3 -maxdepth 3 -exec sh -c 'mv -v {} ..'; \

+0

最初の2つの結果の線はどちらも正しいですか? 1行目には1つの複製しかありませんが、2行目には2つの複製があります。 – hidefromkgb

+0

申し訳ありません、私は自分の投稿を編集したときにそれを乱しました、それは今正しいです。すべてのファイルとサブフォルダが1レベル下に移動しました。 – rabidfurball

答えて

0

あなたはこれらの行適応することができます:アイデアは、ディレクトリ場合とサブディレクトリが同じ名前を持っているし、次に親ディレクトリ内のすべてのファイルを移動した場合、トップレベルで、検出するだけである

for file in * 
do 
    if [ -d "$file" ]; then 
    cd "$file" 
    if [ -d "$file" ]; then 
     cd "$file" 
     mv * .. 
     cd .. 
     #rm -r "$file" 
    fi 
    cd .. 
    fi 
done 

を。

+0

進歩が、これはテスト > TEST2/TEST2/test.txtの > test3に/ test3に/ test.txtの ----なり---- > TEST2 /テストの最初のファイルの後に停止しているようです.txt > test2/test2 > test3/test3/test.txt > test3/test3 – rabidfurball

+0

リストされているファイルを確認するには_do_の後にエコー "$ file"を追加します –

+0

"cd .."が不足していますコードを修正してください。 –

関連する問題