linux - 将子文件夹合并在一起,Linux

标签 linux file merge

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

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

最佳答案

假设可能存在名称冲突和多个扩展名,这将创建唯一名称,将目录路径更改为破折号(例如 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 \)

关于linux - 将子文件夹合并在一起,Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9314434/

相关文章:

linux - 普通用户chown(只换组)

java - 想要将视频快照保存在特定目录中

java - 用户上传的文件放在哪里?

r - 如何将值从一个数据帧传输到另一个数据帧?

python - 合并多个已排序的大文件--python

linux - 如何创建 64 位 inode?

linux - 使用环回接口(interface)在生产应用程序之间进行通信

file - Map在Hadoop下运行时应该把临时文件放在哪里

python - 在 SPSS 中合并数据时遇到问题

linux - bash read 返回退出代码 1,即使它按预期运行