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
如何在unix中重命名文件头_Unix - Fatal编程技术网

如何在unix中重命名文件头

如何在unix中重命名文件头,unix,Unix,在unix中,我有一堆文件,我希望将文件名添加到文件头中,有人有小脚本吗 我有一堆文件: abc.xxx bac.xxx cba.xxx 在每个文件中,我对数据进行了拆分,每个部分都有一个标题: *asdasd-123123 数据数据 *asdasd-345 数据数据 我希望将文件名添加到各自文件的标题中: *abc_asdasd-123123 数据数据 *abc_asdasd-345 数据数据 溴 Slyngej这应该可以 #!/bin/bash for f in ???.xxx # gr

在unix中,我有一堆文件,我希望将文件名添加到文件头中,有人有小脚本吗

我有一堆文件:

abc.xxx
bac.xxx
cba.xxx

在每个文件中,我对数据进行了拆分,每个部分都有一个标题:

*asdasd-123123
数据数据

*asdasd-345
数据数据

我希望将文件名添加到各自文件的标题中:

*abc_asdasd-123123
数据数据

*abc_asdasd-345
数据数据

溴 Slyngej

这应该可以

#!/bin/bash
for f in ???.xxx   # grab file names in directory
do
        tag=`echo $f | cut -c -3`   # pick first 3 char to tag data
        sed "1s/^\*/*${tag}_/" $f > $f.mod  # modify first line, save it with .mod extention
done

嗨,谢谢你的快速回答。但是,在每个文件中都有几个标题,我希望将文件名添加到所有标题中,而不仅仅是第一个linea命令“sed”用于修改文件。文档位于此处:。在本例中,我使用“1”表示“地址”,这是sed应该操作的行。因此,您阅读了文档的第4节,并相应地修改了命令。使用“s”命令,如第3.3节所述。
用于*.xxx中的f;do tag=“$(echo“$f”| cut-c-3)”;sed“s/^\*/*${tag}\/”$f“>“$f”.mod;完成