合并子文件夹,Linux

daw*_*ife 1 linux merge file

我有一个主文件夹"Abc",它有大约800个子文件夹.每个子文件夹都包含大量文件(所有格式相同,比如".doc").如何使用所有这些文件创建一个主文件夹(而不是分发到子文件夹中).我在使用cygwin终端的Windows 7机器上执行此操作.

cp -r命令复制它但将文件保留在子文件夹中,因此它并没有多大帮助.我很感激这方面的帮助.谢谢!

Kev*_*vin 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
Run Code Online (Sandbox Code Playgroud)

如果您可以保证唯一名称,则会移动文件并删除子目录.您可以将两个.s 更改为文件夹的名称,并从外部所述文件夹运行它:

find . -depth \( -type f -exec mv -i {} . \; \) -o \( -type d -empty -delete \)
Run Code Online (Sandbox Code Playgroud)