Regex Bash脚本:将父目录附加到文件名
如何将文件名的父目录普遍附加到文件名本身,例如Regex Bash脚本:将父目录附加到文件名,regex,linux,bash,sed,Regex,Linux,Bash,Sed,如何将文件名的父目录普遍附加到文件名本身,例如 /home/username/Mirrors/earth.com/tree/apples/filename2.html /home/username/Mirrors/earth.com/grass/flower/leave/filename1.html 以后应将文件命名为以下名称: earth.com/tree/apples/filename2.html earth.com/earth/grass/flower/leave/filename1.h
/home/username/Mirrors/earth.com/tree/apples/filename2.html
/home/username/Mirrors/earth.com/grass/flower/leave/filename1.html
以后应将文件命名为以下名称:
earth.com/tree/apples/filename2.html
earth.com/earth/grass/flower/leave/filename1.html
理想情况下,所有文件夹都位于一个文件夹中。这可以通过bash脚本和sed来完成吗
为什么我要这样做:我用httrack镜像了一个巨大的网站,httrack在其相对目录结构中保存了一个文件,我无法让httrack将文件保存为完整的URL。你的意思是
sed 's|^/home/username/Mirrors/||'
?
由于您使用的是固定字段,因此可以使用大量工具
$ sed 's#/home/username/Mirrors##' file
/earth.com/tree/apples/filename2.html
/earth.com/grass/flower/leave/filename1.html
$ cut -c24- file
earth.com/tree/apples/filename2.html
earth.com/grass/flower/leave/filename1.html
您还没有定义要附加多少父目录。将其作为运行时参数,可以使用以下awk命令:
echo /home/username/Mirrors/earth.com/tree/apples/filename2.html |
awk -F '/' -v D=3 '{for (i=D;i>=0;i--) {printf("%s", $(NF-i)); if (i>0) printf("/")}
print "";}'
输出
earth.com/tree/apples/filename2.html
当然,您可以使用
sed
,但是httrack
是有能力的,例如:
httrack http://earth.com/tree/apples/filename2.html -O /tmp/ -N100
根据文档:-N100
站点结构,没有www.domain.xxx/
但更多:
详细信息:选项N
站点结构(默认)N0
web中的HTML/,图像/web中的其他文件/图像/N1
web中的HTML/HTML,web中的image/other/imagesN2
web中的HTML/,web中的图像/其他/N3
HTML-in-web/,images/other-in-web/xxx,其中xxx是文件扩展名 (例如,所有gif都将放在web/gif上)N4
Images/other in web/xxx和HTML in web/HTMLN5
web/中的所有文件,带有随机名称(gadget!)N99
站点结构,不含www.domain.xxx/N100
与N1相同,但“web”替换为站点名称N101
与N2相同,但“web”替换为站点名称N102
与N3相同,但“web”被网站名称替换N103
与N4相同,但“web”被网站名称替换N104
与N5相同,但“web”被网站名称替换N105
与N99相同,但“web”被网站名称替换N199
与N1相同,只是没有“web”目录N1001
与N2相同,只是没有“web”目录N1002
与N3相同,但不存在“web”目录(为g选项设置了选项)N1003
与N4相同,只是没有“web”目录N1004
与N5相同,只是没有“web”目录N1005
与N99相同,只是没有“web”目录N1099
earth.com
之前删除所有内容吗?那将保存一个目录结构,不是吗?我需要像这样命名文件:“test/test2/test3.html”也许我应该补充一点,我有一个巨大的列表和文件夹结构,所有文件的名称都不同,总共大约有10.000个文件。
httrack http://earth.com/tree/apples/filename2.html -O /tmp/ -N100