すべての音楽フォルダを整理しようとしています(音楽フォルダがたくさんあります)。ただし、削除するのではなく、空のフォルダ、数Mbしかない、またはファイルが少ないフォルダを移動したいと思います。
find
次のコマンドを使用してすべての空のディレクトリを移動しました。
find . -empty -type d -exec mv {} /share/Container/beetsV2/music/my_empty_folders \;
...しかし、サイズに応じてディレクトリを見つける方法がわからないようです。私は次のことがうまくいくと思いましたが、予想よりも多くの成果を上げているようです。
find . -size -5M -type d -exec mv {} /share/Container/beetsV2/music/my_folders_under_5Mb \;
いくつかのファイルだけが含まれているディレクトリを見つけると、上記のタスクを実行する単一のコマンドラインが見つからないようです。存在しますか?
ベストアンサー1
からman find
:
-size n [cwbkMG]ファイルは丸められ、n単位よりも小さい、大きい、または正確にn単位のスペースを使用します。
このスイッチはディレクトリとは何の関係もありません。ディスク使用量。
回避策は、次をbash
使用してfind
出力のすべてのディレクトリを処理することですmv
。
move_dirs_smaller_than() {
export MAX=$(($1*1024)) # $1 is in MiB
export path=$2 # $2 /path must be outside of .
find . -mindepth 1 -type d -exec bash -c '
read size _ < <(du -sk "$1")
((size < MAX)) && echo mv -- "$1" "$path"
' bash {} \; -prune
}
echo
出力が十分に良く見える場合は、文を削除してください。
5MiBの機能使用法:
/path
しなければならないいいえ現在のディレクトリ(または使用find ! ./dir
):
move_dirs_smaller_than 5 /path
find
関連マニュアルページを確認し-prune
、必要に応じて-mindepth
作成してください。-maxdepth