我有一个主文件夹“Abc”,它有大约800个子文件夹。每个子文件夹都包含大量文件(所有格式相同,比如“.doc”)。如何使用所有这些文件创建一个主文件夹(而不是分发到子文件夹中)。我在使用cygwin终端的Windows 7机器上执行此操作。
cp -r
命令复制它但将文件保留在子文件夹中,因此它并没有多大帮助。我很感激这方面的帮助。谢谢!
答案 0 :(得分:5)
假设可能存在名称冲突和多个扩展,这将创建唯一的名称,将目录路径更改为破折号(例如a/b/c.doc
将变为a-b-c.doc
)。从要折叠的文件夹中运行此命令:
# if globstar is not enabled, you'll need it.
shopt -s globstar
for file in */**; do [ -f "$file" ] && mv -i "$file" "${file//\//-}"; done
# get rid of the now-empty subdirectories.
find . -type d -empty -delete
如果您可以保证唯一名称,则会移动文件并删除子目录。您可以将两个.
更改为文件夹的名称,并从所述文件夹外部运行:
find . -depth \( -type f -exec mv -i {} . \; \) -o \( -type d -empty -delete \)
答案 1 :(得分:0)
这可能不是最优雅或最有效的方式,但我相信它可以实现你想要的目标:
for file in `find abc`
do
if [ -f $file ]
then
mv $file `basename $file`
fi
done
迭代abc中的所有内容,检查它是否是文件(不是目录),如果是,则将其从当前位置(例如abc / d / example.txt)移动到abc /
编辑:这会使所有子文件夹保持原位(但现在它们都是空的)