我从S3下载了很多文件,将它们全部转储到一个名为contracts
的新文件夹中。现在,在合同中,每个文件都有自己的命名(作为数字)文件夹,即55
,66
等。
查找脚本以获取所有这些子文件夹中的所有文件,将它们移动到父文件夹(/ contracts),然后删除那些空文件夹。
答案 0 :(得分:2)
我会这样做(来自contracts
之外):
mkdir contracts2 #create a sister folder
find contracts -type f -print0 | #find all files in contracts
xargs -0 -I{} cp -l {} contracts2/ #hardlink them flatly to contracts2
现在,如果一切顺利(请查看tree contracts2
),您可以
rm -rf contracts
和mv contracts2 contracts
。
这应该非常快(硬链接非常快,并且它可能只执行cp
的一个实例)并且安全(在运行之前你不会丢失原始目录{{ 1}}就可以了。)
答案 1 :(得分:1)
yes | cp -a /contract/*/* /contract
/ contract表示您的合同目录位于/但您可以在任何地方更改路径,例如yes | cp -a /var/contract/*/* /var/contract
这是来自和路径。如果您想移动而不是复制,请注意将cp更改为mv。在您的情况下,这将有效yes | cp -a contracts/*/* contracts
答案 2 :(得分:1)
您可以使用find
和mv
以及-exec
选项移动所有文件:
find /path/to/contracts -type f -exec mv -i '{}' /path/to/contracts \;
通过向-i
提供mv
选项,它会在覆盖具有相同名称的文件之前提示。如果有许多文件具有相同的名称,您可能需要创建一个简短的脚本来动态重命名文件以避免用户交互。