我有一个这样的目录结构:
├── Tom
│ └── c
│ └── 2
│ ├── file.jpg
│ └── text.txt
└── Sam
├── 1
│ └── c
│ └── music.aac
├── E
│ └── 9
│ └── pic.jpg
└── b
├── 9
│ └── sound.aac
└── d
└── book.doc
我想使用一个命令将所有文件从各个子文件夹移动到主父文件夹(Tom、Sam 等),然后删除所有空子文件夹。我怎样才能做到这一点?
谢谢
答案1
不知道为什么它必须是一句单行话。但这是一种可能性。它查找给定目录树中的所有文件,并将每个此类文件向上移动两个目录。
find -type f | while read; do mv "$REPLY" "$(dirname $REPLY)/../../"; done
请小心使用,因为该命令非常适合您给定的目录结构,并且不考虑其他情况(例如,它将从所有目录移动文件,而不仅仅是您显示的叶目录中的文件)。
答案2
怎么样
find Tom Sam -type f | while read FN; do echo mv "$FN" "${FN%%/*}"; done