Unix 将文件从多个文件夹移动到一个目标文件夹

Unix 将文件从多个文件夹移动到一个目标文件夹,unix,Unix,亲爱的Unix用户,例如,我有6个文件夹,每个文件夹中都有一个名为file.txt的文件。文件名在我所有的文件夹中都完全相同。我想将所有名为file.txt的文件从6个文件夹中的每个文件夹移动到一个包含所有文件的常规文件夹中,因为我想最终连接这些文件。如何做到这一点 输入: folder1:file.txt,folder2:file.txt,folder3:file.txt 输出: 最终文件夹:file.txt、file.txt、file.txt 谢谢 Eleonora同一目录中不能有多个同名文

亲爱的Unix用户,例如,我有6个文件夹,每个文件夹中都有一个名为file.txt的文件。文件名在我所有的文件夹中都完全相同。我想将所有名为file.txt的文件从6个文件夹中的每个文件夹移动到一个包含所有文件的常规文件夹中,因为我想最终连接这些文件。如何做到这一点

输入:
folder1:file.txt,folder2:file.txt,folder3:file.txt

输出: 最终文件夹:file.txt、file.txt、file.txt

谢谢


Eleonora

同一目录中不能有多个同名文件。如果您计划最终连接所有文件,而不是一次完成所有操作

例如,以下命令将连接目录中名称以文件夹开头的所有
file.txt
文件,并将输出写入
new_file.txt

cat folder*/file.txt > new_file.txt
如果要在多级子目录中包含文件,可以考虑使用。 下面将递归搜索当前目录(以及所有子目录)中的
file.txt
,并将其内容连接到
new_file.txt

find . -name file.txt -exec cat {} \; > new_file.txt

同一目录中不能有多个同名文件。如果您计划最终连接所有文件,而不是一次完成所有操作

例如,以下命令将连接目录中名称以文件夹开头的所有
file.txt
文件,并将输出写入
new_file.txt

cat folder*/file.txt > new_file.txt
如果要在多级子目录中包含文件,可以考虑使用。 下面将递归搜索当前目录(以及所有子目录)中的
file.txt
,并将其内容连接到
new_file.txt

find . -name file.txt -exec cat {} \; > new_file.txt

它们不能在一个目录中都有相同的名称

我会先找一只猫,然后把它放进文件里

 cat `find .name 'file' -print` path/newFile

它们不能在一个目录中都有相同的名称

我会先找一只猫,然后把它放进文件里

 cat `find .name 'file' -print` path/newFile

这将通过重命名为带有inodenumber前缀的名称来处理重复名称之间的冲突。这个功能不是严格需要的

对于带有空格或制表符的文件名,此方法可能会失败,甚至更糟。(但在名字中加空格和制表符的人应该输…)


这将通过重命名为带有inodenumber前缀的名称来处理重复名称之间的冲突。这个功能不是严格需要的

对于带有空格或制表符的文件名,此方法可能会失败,甚至更糟。(但在名字中加空格和制表符的人应该输…)


我认为这是不可能的。如果目标文件夹中有同名文件,它们将被覆盖。您可以使用unix工具
find
,查找名为
file.txt
的所有文件,并使用
mv
将它们移动到目标文件夹。但是你必须重命名这些文件。例如到file1.txt,file2.txt…我认为这是不可能的。如果目标文件夹中有同名文件,它们将被覆盖。您可以使用unix工具
find
,查找名为
file.txt
的所有文件,并使用
mv
将它们移动到目标文件夹。但是你必须重命名这些文件。例如到file1.txt,file2.txt…嗨,肖恩!确切地我想把它们连接在一起。我知道没有同名文件可以保存在同一个文件夹中,但它们是在每个文件夹中独立运行的算法的输出。我尝试了你建议我使用的代码,但不起作用。它只复制最后一个新的_file.txt中file.txt的内容;您需要修改它以适应您的文件结构。如果你发布一个更具体的例子,我们可能会提供帮助。是的,肖恩,我正在处理的问题在我发布的问题中得到了解释。我试着写一个循环如下:因为我在文件夹*;do cat file.txt>new_file.txt$i;完成。它也不起作用..您的循环应该是这样的:
for i in folder*;执行cat$i/file.txt>>新建_file.txt;完成
。然而,我提供的例子没有理由不起作用。嗨,肖恩!现在幸运的是,它工作得很好。我只想让你问最后一个快速的问题。我要连接的每个文件在开始时都包含17行,我希望在连接之前删除这些行,因为它们包含我在运行软件之前设置的参数。是否有一个参数(如head-n)可以在cat中为我执行此操作?谢谢!嗨,肖恩!确切地我想把它们连接在一起。我知道没有同名文件可以保存在同一个文件夹中,但它们是在每个文件夹中独立运行的算法的输出。我尝试了你建议我使用的代码,但不起作用。它只复制最后一个新的_file.txt中file.txt的内容;您需要修改它以适应您的文件结构。如果你发布一个更具体的例子,我们可能会提供帮助。是的,肖恩,我正在处理的问题在我发布的问题中得到了解释。我试着写一个循环如下:因为我在文件夹*;do cat file.txt>new_file.txt$i;完成。它也不起作用..您的循环应该是这样的:
for i in folder*;执行cat$i/file.txt>>新建_file.txt;完成
。然而,我提供的例子没有理由不起作用。嗨,肖恩!现在幸运的是,它工作得很好。我只想让你问最后一个快速的问题。我要连接的每个文件在开始时都包含17行,我希望在连接之前删除这些行,因为它们包含我在运行软件之前设置的参数。是否有一个参数(如head-n)可以在cat中为我执行此操作?谢谢!