私が直面している問題は、何千ものサブディレクトリがあるディレクトリがあり、各サブディレクトリにはより多くのサブディレクトリが含まれており、すべてのサブディレクトリには内部にイメージがあることです。
私は何千ものを持っています:
/1056/7624/image.png
基本的にここから7624ディレクトリを削除して、次のような何千ものディレクトリを作成したいと思います。
/1056/image.png
試してみましたが、mv */*/* */*
本当に驚きました。ターミナルコマンドを使用してこれを実行できますか?
私は50の画像を取得するために50のディレクトリに入る必要なく、このマルチファイルアップローダを使用できるようにしようとしています。
答え1
for dir in */*; do
if [[ -d "$dir" ]]; then
(
cd "$dir"
mv -n * ..
cd ..
rmdir "$( basename "$dir" )"
)
fi
done
重複したファイルまたはサブディレクトリ名はいいえ移動したので、このような場合、ディープディレクトリはいいえまだファイルが含まれているため削除されました。
答え2
これにより、現在のディレクトリとサブディレクトリのすべてのファイルが現在のレベルに移動されます。数字が追加され、同じ名前のファイルの名前が変更されます。
find ./ -type f -print -exec mv --backup=numbered {} . \;
それからあなたはすべてを得ることができることを確認できます
find ./ -mindepth 2 -type f