Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.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
Linux 从文件名中提取路径_Linux_Bash_Shell_Awk_Sed - Fatal编程技术网

Linux 从文件名中提取路径

Linux 从文件名中提取路径,linux,bash,shell,awk,sed,Linux,Bash,Shell,Awk,Sed,需要复制超过100.000个文件的列表(没有.ABC和.DEF扩展名!)。 目前,我正在使用/opt/project/目录中的while和find命令生成完整路径,以便稍后复制它们 while read LINE; do find opt/project/TOP3RST_0_/ -name "$LINE"*; done < < TOP3RST_0_file.list > PATH_TOP3RST_0_file.list 最后,我需要计算时间间隔: 英国广

需要复制超过100.000个文件的列表(没有.ABC.DEF扩展名!)。 目前,我正在使用/opt/project/目录中的whilefind命令生成完整路径,以便稍后复制它们

while read LINE; do find opt/project/TOP3RST_0_/ -name "$LINE"*; done <  < TOP3RST_0_file.list > PATH_TOP3RST_0_file.list
最后,我需要计算时间间隔:

英国广播公司排名第三的第一名第0名第20200716T003457名第20100716T04736名第0002名

20200716T003457=2020-07-16 00:34:57

20200716T004736=2020-07-16 00:47:36


我认为这样的东西可以计算差距?

下面的
sed
行可以让您开始:

$ sed 's@.*__\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\).*@/opt/project/TOP3RST_0_/\1/\2/\3/&/&@; s/.*/&.ABC\n&.DEF/' <<<'BT_SUPR_TOP3RST_0__20200716T004902_20200716T005113_0002'
/opt/project/TOP3RST_0_/2020/07/16/BT_SUPR_TOP3RST_0__20200716T004902_20200716T005113_0002/BT_SUPR_TOP3RST_0__20200716T004902_20200716T005113_0002.ABC
/opt/project/TOP3RST_0_/2020/07/16/BT_SUPR_TOP3RST_0__20200716T004902_20200716T005113_0002/BT_SUPR_TOP3RST_0__20200716T004902_20200716T005113_0002.DEF

$sed's@.*__\([0-9]\{4\}\([0-9]\{2\}\)\([0-9]\{2\}\).@/opt/project/TOP3RST\u 0\/\1/\2/\3/&@;s/*/&.ABC\n&.DEF/'Tl;医生,请。样本数据是什么,预期输出是什么?你把我弄丢了,你读过了吗?我也输了。总是试图简化/缩小问题我有这个权利吗?您的进程被赋予了一个文件名,并且只有一个文件名。您不知道该文件在哪里,但完整路径编码在文件名中。所以你必须解析文件名来找出它的位置?解析太慢了?但是创建该文件的过程必须知道它在哪里?但是只传递文件名?更改创建过程以传递整个路径。这样,文件名就不必重复包含在路径中的信息——这是无用的冗余。这真的很难读取。你能更详细地描述一下你的问题吗?你从哪里读路径?是文本文件吗?您还可以提供完整的代码片段吗?
“$LINE”*
很奇怪,您需要
“$LINE*”
<代码>此过程将缓慢进行
确实如此-您正在运行
查找
100000次。。。运行一个
find
将显示所有
-name-o-name othername-o-name anothername等
<代码>但我需要完整路径来定位为什么?只需添加
“$PWD/
以查找参数。无论如何,你是从复制一些文件开始的。然后您发布了一些
find
执行命令行。然后,您发布了一些需要添加后缀和前缀的行。都有关系吗?您想加快查找
或创建扩展名为
.ABC
.DEF
的列表的速度吗?
$ sed 's@.*__\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\).*@/opt/project/TOP3RST_0_/\1/\2/\3/&/&@; s/.*/&.ABC\n&.DEF/' <<<'BT_SUPR_TOP3RST_0__20200716T004902_20200716T005113_0002'
/opt/project/TOP3RST_0_/2020/07/16/BT_SUPR_TOP3RST_0__20200716T004902_20200716T005113_0002/BT_SUPR_TOP3RST_0__20200716T004902_20200716T005113_0002.ABC
/opt/project/TOP3RST_0_/2020/07/16/BT_SUPR_TOP3RST_0__20200716T004902_20200716T005113_0002/BT_SUPR_TOP3RST_0__20200716T004902_20200716T005113_0002.DEF