Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 将文件夹名称指定给文件名_Shell_Unix - Fatal编程技术网

Shell 将文件夹名称指定给文件名

Shell 将文件夹名称指定给文件名,shell,unix,Shell,Unix,我想在一个名为“output.txt”的唯一文件中粘贴一些文件。 尽管如此,我还是希望将文件夹的名称指定给输出文件的名称,这样它将是:“output_uuz.txt”。 我有数千个文件夹,因此“粘贴”命令将在我能够编写的for循环中运行。有人能帮我吗 这个问题非常不清楚。我将其解释为,您有大量的目录,其中都包含一个名为“output.txt”的文件,并且您希望将这些文件移动到一个目录中,并在名称中嵌入原始路径。假设包含所有文件的目录树的根目录是/path/to/source,并且您希望将它们移动

我想在一个名为“
output.txt
”的唯一文件中粘贴一些文件。 尽管如此,我还是希望将文件夹的名称指定给输出文件的名称,这样它将是:“
output_uuz.txt
”。
我有数千个文件夹,因此“粘贴”命令将在我能够编写的for循环中运行。有人能帮我吗

这个问题非常不清楚。我将其解释为,您有大量的目录,其中都包含一个名为“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 {} \;

相对路径和绝对路径同样适用

我也不清楚您想要什么,但是
mktemp(1)
有可能有用的模板。

您所说的“粘贴”是什么意思?有一个Unix命令
paste
,它将每个输入文件的第1行放在输出的第1行,然后将每个文件的第2行放在输出的第2行,以此类推。或者您只是指串联(当然,对于串联,有一个命令
cat
)。您将提供什么作为shell脚本的参数?目录的名称?目录中是否有子目录?你有成千上万的目录;一个目录中有多少个文件?是否要删除原始文件?目录中是否已经存在文件
output_uux.txt
!非常感谢你!