2015-07-03 286 views
-1

我想将一些文件粘贴到名为“output.txt”的唯一文件中。 不过,我想将文件夹的名称分配给输出文件的名称,以便它是:“output_<name of the Folder>.txt”。 我有成千上万的文件夹,以便“粘贴”命令将运行在我能写的for循环中。任何人都可以帮助我吗?将文件夹的名称指定为文件的名称

+1

“粘贴”是什么意思?有一个Unix命令“粘贴”,将每个输入文件的第1行放在输出的第1行,然后将每个文件的第2行放到输出的第2行等等。或者,你是否仅仅意味着连接(有一个命令'猫“,当然)。你将作为参数提供给shell脚本什么?目录的名称?目录中是否有子目录?你有数千个目录;目录中有多少个文件?你想摆脱原始文件?目录中是否有文件'output_ .txt'? –

回答

1

这个问题令人难以置信的不清楚。我将把它解释为意味着你有大量的目录都包含一个名为'output.txt'的文件,并且你想要将这些文件移动到一个单独的目录中,同时将原始路径嵌入到名称中。假设包含所有文件的目录树的根是/path/to/source,你想将它们移动到/path/to/destination

find /path/to/source -name output.txt -exec sh -c 'd=$(dirname "$1" | 
    tr/_); cp "$1" "/path/to/destination/output_$d.txt"' sh {} \; 

相对路径将正常工作,以及绝对路径。

+0

正是我在找的!非常感谢你! – Elb

0

我也不清楚你想要什么,但mktemp(1)有模板可能有帮助。