linux 字符长度,字符串的长度怎么数
大家好,今天给各位分享linux 字符长度的一些知识,其中也会对字符串的长度怎么数进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
linux 下制作可启动 img/iso 文件的方法
制作镜像文件有三种方法,cp, cat, dd和其它专用工具。cp,cat和 dd都可以从设备复制文件来创建镜像。而 dd命令更为强大,可以通过指定块大小,块多少来直接创建镜像。
IMG文件:
因为cp, cat只能从设备来制作镜像,但又没有专用工具来做 IMG文件,故这里用 dd命令来制作 IMG文件。
1,制作
dd if=/dev/zero of=fdimage.img count=2880
or
dd if=/dev/zero of=fdimage.img bs=1024 count=1440
2,格式化
mkfs.msdos fdimage.img
3,修改
可以用下面的命令 mount后,可直接修改
mount-o loop*.img/mnt
4,可启动
因为制作可启动镜像一定会用到虚拟机,推荐用 Virtualbox,先到网上下个 DOS启动盘来引导。用 DOS的 sys命令传递系统。推荐使用 FreeDOS,属自由软件。也可用 dd命令来传递引导引导信息,并复制启动启动时所需文件来做启动盘。以 FreeDOS为例,传递启动信息用以下命令,其中下载的启动盘为 balder10.img文件
dd if=balder10.img of=fdimage.img bs=512 count=1 conv=notrunc
多系统用 grub4dos,
1),用 grub.exe引导多系统
2),安装 grub到MBR,用 grldr来引导多系统。当然也可用同上面一样的办法用 dd直接写入引导信息。
bootlace.com--floppy--chs 0x00
注:才发现用 dd命令只能从逻辑扇区开始 copy,先前我想可否用 dd来将 grldr.mbr写入 u盘,我用自己的 U盘试了,结果不能打开了。因为我的 U盘为 fat16格式,逻辑扇区开始是OBR,接着是FAT表,结果把 FAT1表给盖了,那时还没有想到还有 FAT2呢,就格了,现在想起来郁闷啊,好多东西都没有了。
为什么软盘可以呢,因为它就没有前面的63个扇区,直接从逻辑0扇区开始的。
ISO文件:
因为文件系统的关系,就不能用 dd来直接做 ISO镜像了(当然,它还是可以从设备制作 ISO镜像)。 ISO文件的制作有专用工具,
1,制作
mkisofs-r-o cdimage.iso/home/XXX/cddir
2,格式化
用mkiso制作的 iso已有文件系统 iso9660
3,可启动
无论是引导单系统还是引导多系统都还是用 mkisofs这个工具,只是加载到光盘的 boot loader不一样而已。当然也可以将 DOS的引导器(也就是它的引导扇区)或 windows的引导器( XP系统的是 ntldr)放入让光盘引导。下面只讨论 grub4dos的使用
1),用 grub.exe引导多系统
用 DOS加载 grub.exe引导多系统
2),将 grub安装到光盘 MBR
在制作时可用下面的命令直接生成可启动镜像,其中 grldr, menu.lst要放在 cddir目录下,也就是在 cd根目录。
mkisofs-R-b grldr-no-emul-boot-boot-load-seg 0x1000-o cdimage.iso cddir
mkisofs-R-b grldr-no-emul-boot-boot-load-size 4-o cdimage.iso cddir
PS,下面给出 dd命令和 mkisofs参数说明
dd(convert and copy files)
dd是 Linux/UNIX下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
dd的主要选项:
指定数字的地方若以下列字符结尾乘以相应的数字:
b=512, c=1, k=1024, w=2, xm=number m
if=file
输入文件名,缺省为标准输入。
of=file
输出文件名,缺省为标准输出。
ibs=bytes
一次读入 bytes个字节(即一个块大小为 bytes个字节)。
obs=bytes
一次写 bytes个字节(即一个块大小为 bytes个字节)。
bs=bytes
同时设置读写块的大小为 bytes,可代替 ibs和 obs。
cbs=bytes
一次转换 bytes个字节,即转换缓冲区大小。
skip=blocks
从输入文件开头跳过 blocks个块后再开始复制。
seek=blocks
从输出文件开头跳过 blocks个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)
count=blocks
仅拷贝 blocks个块,块大小等于 ibs指定的字节数。
conv=conversion[,conversion...]
用指定的参数转换文件。
转换参数:
ascii转换 EBCDIC为 ASCII。
ebcdic转换 ASCII为 EBCDIC。
ibm转换 ASCII为 alternate EBCDIC.
block把每一行转换为长度为 cbs的记录,不足部分用空格填充。
unblock
使每一行的长度都为 cbs,不足部分用空格填充。
lcase把大写字符转换为小写字符。
ucase把小写字符转换为大写字符。
swab交换输入的每对字节。 Unlike the
Unix dd, this works when an odd number of
bytes are read. If the input file contains
an odd number of bytes, the last byte is
simply copied(since there is nothing to
swap it with).
noerror
出错时不停止。
notrunc
不截短输出文件。
sync把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
由于 dd命令允许二进制方式读写,所以特别适合在原始物理设备上进行输入/输出。例如可以用下面的命令为软盘建立镜像文件:
dd if=/dev/fd0 of=disk.img bs=1440k
有趣的是,这个镜像文件能被 HD-Copy,Winimage等工具软件读出。再如把第一个硬盘的前 512个字节存为一个文件:
dd if=/dev/hda of=disk.mbr bs=512 count=1
mkisofs(make iso file system)
功能说明:建立ISO 9660映像文件。
语法:mkisofs [-adDfhJlLNrRTvz][-print-size][-quiet][-A应用程序ID][-abstract摘要文件][-b开机映像文件][-biblio ][-c开机文件名称][-C盘区编号,磁区编号][-copyright版权信息文件][-hide目录或文件名][-hide-joliet文件或目录名][-log-file记录文件][-m目录或文件名][-M开机映像文件][-o映像文件][-p数据处理人][-P光盘发行人][-sysid系统ID ][-V光盘ID][-volset卷册集ID][-volset-size光盘总数][-volset-seqno卷册序号][-x目录][目录或文件]
补充说明:mkisofs可将指定的目录与文件做成ISO 9660格式的映像文件,以供刻录光盘。
参数:
-a或--all mkisofs通常不处理备份文件。使用此参数可以把备份文件加到映像文件中。
-A应用程序ID或-appid应用程序ID指定光盘的应用程序ID。
-abstract摘要文件指定摘要文件的文件名。
-b开机映像文件或-eltorito-boot开机映像文件指定在制作可开机光盘时所需的开机映像文件。
-biblio指定ISBN文件的文件名,ISBN文件位于光盘根目录下,记录光盘的ISBN。
-c开机文件名称制作可开机光盘时,mkisofs会将开机映像文件中的全-eltorito-catalog开机文件名称全部内容作成一个文件。
-C盘区编号,盘区编号将许多节区合成一个映像文件时,必须使用此参数。
-copyright版权信息文件指定版权信息文件的文件名。
-d或-omit-period省略文件后的句号。
-D或-disable-deep-relocation ISO 9660最多只能处理8层的目录,超过8层的部分,RRIP会自动将它们设置成ISO 9660兼容的格式。使用-D参数可关闭此功能。
-f或-follow-links忽略符号连接。
-h显示帮助。
-hide目录或文件名使指定的目录或文件在ISO 9660或Rock RidgeExtensions的系统中隐藏。
-hide-joliet目录或文件名使指定的目录或文件在Joliet系统中隐藏。
-J或-joliet使用Joliet格式的目录与文件名称。
-l或-full-iso9660-filenames使用ISO 9660 32字符长度的文件名。
-L或-allow-leading-dots允许文件名的第一个字符为句号。
-log-file记录文件在执行过程中若有错误信息,预设会显示在屏幕上。
-m目录或文件名或-exclude目录或文件名指定的目录或文件名将不会房入映像文件中。
-M映像文件或-prev-session映像文件与指定的映像文件合并。
-N或-omit-version-number省略ISO 9660文件中的版本信息。
-o映像文件或-output映像文件指定映像文件的名称。
-p数据处理人或-preparer数据处理人记录光盘的数据处理人。
-print-size显示预估的文件系统大小。
-quiet执行时不显示任何信息。
-r或-rational-rock使用Rock Ridge Extensions,并开放全部文件的读取权限。
-R或-rock使用Rock Ridge Extensions。
-sysid系统ID指定光盘的系统ID。
-T或-translation-table建立文件名的转换表,适用于不支持Rock Ridge Extensions的系统上。
-v或-verbose执行时显示详细的信息。
-V光盘ID
Linux文件名的长度不能超过多少个字符
题主你好,
这个长度不是绝对的,但大多数的linux系统:
文件名长度限制是255个字符;
路径名长度限制是4096个字符;
-----
具体情况题主可以在自己电脑上执行以下两个命令看一下自己本地的linux系统这两个长度情况:
文件名最大长度: getconf NAME_MAX/
路径名最大长度: getconf PATH_MAX/
我电脑上的情况:
-----
另外,这个信息其实都在linux一个名叫limits.h的头文件中写着呢,有兴趣的话,题主自己可以找一下:
find/usr| grep limits.h| xargs-I{} grep-H'NAME_MAX'{}
find/usr| grep limits.h| xargs-I{} grep-H'PATH_MAX'{}
=====
希望可以帮到题主,欢迎追问.
linux下scp远程拷贝包含空格的目录或者文件的解决方法
今天遇到个白痴问题,用了linux这么久了,竟然还出现如此低级的错误。
记录下,免得又忘记。
描述:
今天需要远程拷贝一些文件到电脑上,ubuntu的。远程电脑是debian的。
文件和目录包含大量的空格,采用scp拷贝,例:
scp-r root@192.168.0.51:/home/xxj/Documents/files/xx xx jj.tar.gz./
最开始就意识到了是空格问题,就采用了文件空格前加“/”,死活不行,
scp-r root@192.168.0.51:/home/xxj/Documents/files/xx/ xx/ jj.tar.gz./
然后又使用引号,单引号,双引号都用了,还是不行。
scp-r root@192.168.0.51:'/home/xxj/Documents/files/xx xx jj.tar.gz'./
scp-r root@192.168.0.51:"/home/xxj/Documents/files/xx xx jj.tar.gz"./
最后同时在空格前加斜杠,整个文件目录加引号才行
scp-r root@192.168.0.51:"/home/xxj/Documents/files/xx/ xx/ jj.tar.gz"./
linux下带空格文件批量cp和scp补充:
背景:主备机同步文件失败,现在需要人工手动的在备机上补齐文件,但是发现文件名竟然有空格
主机的IP:192.168.0.90主机文件清单名称:src_file.txt,备机文件清单名称:dst_file.txt,
从下面可以知道,主备机的文件路径和文件的名称是不一样的,同步的时候,从src_file.txt copy到dst_file.txt需要一一对应,另备机上的目录并不能保证都存在,所以需要先把备机上的目录结构先创建出来
[root@station90 file]# cat src_file.txt
/home/src/10329/g0197/k/19xiazai h264.3gp
/home/src/10327/g0194/10ng h264 xiazai.3gp
/home/src/10329/g0196/lh/10xiazai h263.3gp
/home/src/101117/060/090/1011.3gp
/home/src/10520/056/0590/99833/10x_04 0_0_3.3gp
[root@station90 file]# cat dst_file.txt
/home/dst/1038/g07/k/3/10290upload h264.3gp
/home/dst/10327/g04/10ng h264 upload.3gp
/home/dst/1038/g06/lhppww/10upload h263.3gp
/home/dst/101117/06g090/1011.3gp
/home/dst/1052g056/0590/33/10x_04 0_0_3.3gp
从dst_file.txt(备机文件)可以知道,目录的级别不是一样的,也就是说第一行为6级目录,第二行却为4级目录,如何取出目录结构,先创建出目录结构呢?执行如下命令即可:
[root@station90 file]# awk-F'/''{for(i=1;iNF;i++){printf$i"/"}printf"/n"}' dst_file.txt//注意iNF,即不需要循环到最后一列,printf$i是不打印回车的,一行循环完毕后,printf"/n"会打印回车,这样的结果刚好是我们需要的
/home/dst/1038/g07/k/3/
/home/dst/10327/g04/
/home/dst/1038/g06/lhppww/
/home/dst/101117/06g090/
/home/dst/1052g056/0590/33/
[root@station90 file]# awk'{print$1}' dst_file.txt| awk-F'/''{print substr($0,1,(length($0)-length($NF)))}'/tmp/dst_dir.txt
//根据dst_file.txt的特点,先执行awk'{print$1}' dst_file.txt以空格作为分隔符,取出第一列,这样取出的就没有空格,$0为文本里面包含的所有内容,再通过截取字符串的方式,substr($0(去除空格的文本本身),1(从第一个字符开始),(length($0)-length($NF))所有字符的长度减去最后一列的字符长度,就等于我们需要的字符长度,也就是从1,我们需要的字符长度,结果就是我们需要的了
[root@station90 file]# cat/tmp/dst_dir.txt
/home/dst/1038/g07/k/3/
/home/dst/10327/g04/
/home/dst/1038/g06/lhppww/
/home/dst/101117/06g090/
/home/dst/1052g056/0590/33/
[root@station90 file]# mkdir-p$(cat/tmp/dst_dir.txt)
[root@station90 file]# ls-ld$(cat/tmp/dst_dir.txt)/目录结构已经创建出来了
drwxr-xr-x 2 root root 4096 11-10 17:37/home/dst/101117/06g090/
drwxr-xr-x 2 root root 4096 11-10 17:37/home/dst/10327/g04/
drwxr-xr-x 2 root root 4096 11-10 17:37/home/dst/1038/g06/lhppww/
drwxr-xr-x 2 root root 4096 11-10 17:37/home/dst/1038/g07/k/3/
drwxr-xr-x 2 root root 4096 11-10 17:37/home/dst/1052g056/0590/33/
part1:单纯的从本机copy到本机的其他目录,会比较简单,如下所示:
[root@station90 file]# sed-i-e"s/^/cp/"/g"-e"s/$//"/g" src_file.txt//在文本中的开头和结尾添加双引号
[root@station90 file]# cat src_file.txt
cp"/home/src/10329/g0197/k/19xiazai h264.3gp"
cp"/home/src/10327/g0194/10ng h264 xiazai.3gp"
cp"/home/src/10329/g0196/lh/10xiazai h263.3gp"
cp"/home/src/101117/060/090/1011.3gp"
cp"/home/src/10520/056/0590/99833/10x_04 0_0_3.3gp"
[root@station90 file]# sed-i-e"s/^//"/g"-e"s/$//"/g" dst_file.txt//在文本中的开头和结尾添加双引号
[root@station90 file]# cat dst_file.txt
"/home/dst/1038/g07/k/3/10290upload h264.3gp"
"/home/dst/10327/g04/10ng h264 upload.3gp"
"/home/dst/1038/g06/lhppww/10upload h263.3gp"
"/home/dst/101117/06g090/1011.3gp"
"/home/dst/1052g056/0590/33/10x_04 0_0_3.3gp"
[root@station90 file]#paste-d'' src_file.txt dst_file.txt cp.sh//src_file.txt和dst_file.txt文本以空格作为分隔符合成一个文件
[root@station90 file]#cat cp.sh
cp"/home/src/10329/g0197/k/19xiazai h264.3gp""/home/dst/1038/g07/k/3/10290upload h264.3gp"
cp"/home/src/10327/g0194/10ng h264 xiazai.3gp""/home/dst/10327/g04/10ng h264 upload.3gp"
cp"/home/src/10329/g0196/lh/10xiazai h263.3gp""/home/dst/1038/g06/lhppww/10upload h263.3gp"
cp"/home/src/101117/060/090/1011.3gp""/home/dst/101117/06g090/1011.3gp"
cp"/home/src/10520/056/0590/99833/10x_04 0_0_3.3gp""/home/dst/1052g056/0590/33/10x_04 0_0_3.3gp"
[root@station90 file]# sed-i"1,1s/^//#/!//bin//bash/n/g" cp.sh//在脚本中添加#!/bin/bash
[root@station90 file]# cat cp.sh
#!/bin/bash
cp"/home/src/10329/g0197/k/19xiazai h264.3gp""/home/dst/1038/g07/k/3/10290upload h264.3gp"
cp"/home/src/10327/g0194/10ng h264 xiazai.3gp""/home/dst/10327/g04/10ng h264 upload.3gp"
cp"/home/src/10329/g0196/lh/10xiazai h263.3gp""/home/dst/1038/g06/lhppww/10upload h263.3gp"
cp"/home/src/101117/060/090/1011.3gp""/home/dst/101117/06g090/1011.3gp"
cp"/home/src/10520/056/0590/99833/10x_04 0_0_3.3gp""/home/dst/1052g056/0590/33/10x_04 0_0_3.3gp"
[root@station90 file]# chmod+x cp.sh
[root@station90 file]# ls-l"/home/dst/1038/g07/k/3/10290upload h264.3gp"//执行cp.sh脚本前,文件是不存在的
ls:/home/dst/1038/g07/k/3/10290upload h264.3gp:没有那个文件或目录
[root@station90 file]#./cp.sh
[root@station90 file]# ls-l"/home/dst/1038/g07/k/3/10290upload h264.3gp"//ok,copy成功
-rw-r--r-- 1 root root 0 11-10 17:44/home/dst/1038/g07/k/3/10290upload h264.3gp
part2从远成主机scp文件过来,先举例一错误的例子,正确的总是慢慢的总结出来的
执行rm.sh,删除刚才copy过来的文件
[root@station90 file]# cat rm.sh
#!/bin/bash
rm-f"/home/dst/1038/g07/k/3/10290upload h264.3gp"
rm-f"/home/dst/10327/g04/10ng h264 upload.3gp"
rm-f"/home/dst/1038/g06/lhppww/10upload h263.3gp"
rm-f"/home/dst/101117/06g090/1011.3gp"
rm-f"/home/dst/1052g056/0590/33/10x_04 0_0_3.3gp"
[root@station90 file]#./rm.sh
[root@station90 file]# sed-i-e"s/^/scp/ root/@192/.168/.0/.90/:/"/g"-e"s/$//"/g" src_file.txt
//在src_file.txt文件的开头和结尾添加双引号,同时添加root@192.168.0.90:,最终如下所示
[root@station90 file]# cat src_file.txt
scp root@192.168.0.90:"/home/src/10329/g0197/k/19xiazaih264.3gp"
scp root@192.168.0.90:"/home/src/10327/g0194/10ngh264 xiazai.3gp"
scp root@192.168.0.90:"/home/src/10329/g0196/lh/10xiazaih263.3gp"
scp root@192.168.0.90:"/home/src/101117/060/090/1011.3gp"
scp root@192.168.0.90:"/home/src/10520/056/0590/99833/10x_040_0_3.3gp"
[root@station90 file]# sed-i-e"s/^//"/g"-e"s/$//"/g" dst_file.txt//在文本中的开头和结尾添加双引号
[root@station90 file]# cat dst_file.txt
"/home/dst/1038/g07/k/3/10290upload h264.3gp"
"/home/dst/10327/g04/10ng h264 upload.3gp"
"/home/dst/1038/g06/lhppww/10upload h263.3gp"
"/home/dst/101117/06g090/1011.3gp"
"/home/dst/1052g056/0590/33/10x_04 0_0_3.3gp"
[root@station90 file]# paste-d'' src_file.txt dst_file.txt scp.sh//合成shell脚本步骤一
[root@station90 file]# cat scp.sh
scp root@192.168.0.90:"/home/src/10329/g0197/k/19xiazaih264.3gp""/home/dst/1038/g07/k/3/10290upload h264.3gp"
scp root@192.168.0.90:"/home/src/10327/g0194/10ngh264 xiazai.3gp""/home/dst/10327/g04/10ng h264 upload.3gp"
scp root@192.168.0.90:"/home/src/10329/g0196/lh/10xiazaih263.3gp""/home/dst/1038/g06/lhppww/10upload h263.3gp"
scp root@192.168.0.90:"/home/src/101117/060/090/1011.3gp""/home/dst/101117/06g090/1011.3gp"
scp root@192.168.0.90:"/home/src/10520/056/0590/99833/10x_040_0_3.3gp""/home/dst/1052g056/0590/33/10x_04 0_0_3.3gp"
[root@station90 file]# sed-i"1,1s/^//#/!//bin//bash/n/g" scp.sh//合成shell脚本步骤二
[root@station90 file]# cat scp.sh//看过去没有问题是吧,借鉴上面的part1部分cp得到scp嘛,其实是有问题的
#!/bin/bash
scp root@192.168.0.90:"/home/src/10329/g0197/k/19xiazaih264.3gp""/home/dst/1038/g07/k/3/10290upload h264.3gp"
scp root@192.168.0.90:"/home/src/10327/g0194/10ngh264 xiazai.3gp""/home/dst/10327/g04/10ng h264 upload.3gp"
scp root@192.168.0.90:"/home/src/10329/g0196/lh/10xiazaih263.3gp""/home/dst/1038/g06/lhppww/10upload h263.3gp"
scp root@192.168.0.90:"/home/src/101117/060/090/1011.3gp""/home/dst/101117/06g090/1011.3gp"
scp root@192.168.0.90:"/home/src/10520/056/0590/99833/10x_040_0_3.3gp""/home/dst/1052g056/0590/33/10x_04 0_0_3.3gp"
[root@station90 file]# chmod+x scp.sh
[root@station90 file]#./scp.sh//发现了吧,从远程主机找不到这些文件,只有没有空格的文件名称才可以复制过来
scp:/home/src/10329/g0197/k/19xiazai: No such file or directory
scp: h264.3gp: No such file or directory
scp:/home/src/10327/g0194/10ng: No such file or directory
scp: h264: No such file or directory
scp: xiazai.3gp: No such file or directory
scp:/home/src/10329/g0196/lh/10xiazai: No such file or directory
scp: h263.3gp: No such file or directory
1011.3gp 100% 0 0.0KB/s 00:00
scp:/home/src/10520/056/0590/99833/10x_04: No such file or directory
scp: 0_0_3.3gp: No such file or directory
继续错误的里程,想想,肯定是空格没有进行转义,遂src_file.txt文件和src_file.txt文件中的空格都进行转义,于是下面错误的过程来了:
[root@station90 file]# cat src_file.txt//原文件内容格式
/home/src/10329/g0197/k/19xiazai h264.3gp
/home/src/10327/g0194/10ng h264 xiazai.3gp
/home/src/10329/g0196/lh/10xiazai h263.3gp
/home/src/101117/060/090/1011.3gp
/home/src/10520/056/0590/99833/10x_04 0_0_3.3gp
[root@station90 file]# sed-i-e"s/^//"/g"-e"s/$//"/g" src_file.txt//文件的开头和结尾加上双引号
[root@station90 file]# cat src_file.txt
"/home/src/10329/g0197/k/19xiazai h264.3gp"
"/home/src/10327/g0194/10ng h264 xiazai.3gp"
"/home/src/10329/g0196/lh/10xiazai h263.3gp"
"/home/src/101117/060/090/1011.3gp"
"/home/src/10520/056/0590/99833/10x_04 0_0_3.3gp"
[root@station90 file]# sed-i"s//////g" src_file.txt//对空格进行转义
[root@station90 file]# cat src_file.txt
"/home/src/10329/g0197/k/19xiazai/ h264.3gp"
"/home/src/10327/g0194/10ng/ h264/ xiazai.3gp"
"/home/src/10329/g0196/lh/10xiazai/ h263.3gp"
"/home/src/101117/060/090/1011.3gp"
"/home/src/10520/056/0590/99833/10x_04/ 0_0_3.3gp"
[root@station90 file]# cat dst_file.txt///原文件内容格式
/home/dst/1038/g07/k/3/10290upload h264.3gp
/home/dst/10327/g04/10ng h264 upload.3gp
/home/dst/1038/g06/lhppww/10upload h263.3gp
/home/dst/101117/06g090/1011.3gp
/home/dst/1052g056/0590/33/10x_04 0_0_3.3gp
[root@station90 file]# sed-i-e"s/^//"/g"-e"s/$//"/g"-e"s//////g" dst_file.txt//在文件开头和结尾加双引号和空格进行转义
[root@station90 file]# cat dst_file.txt
"/home/dst/1038/g07/k/3/10290upload/ h264.3gp"
"/home/dst/10327/g04/10ng/ h264/ upload.3gp"
"/home/dst/1038/g06/lhppww/10upload/ h263.3gp"
"/home/dst/101117/06g090/1011.3gp"
"/home/dst/1052g056/0590/33/10x_04/ 0_0_3.3gp"
[root@station90 file]# sed-i"s/^/scp/ root/@192/.168/.0/.90/:/g" src_file.txt//对远程文件(192.168.0.90)src_file.txt加上scp root@192.168.0.90:
[root@station90 file]# cat src_file.txt
scp root@192.168.0.90:"/home/src/10329/g0197/k/19xiazai/h264.3gp"
scp root@192.168.0.90:"/home/src/10327/g0194/10ng/h264/ xiazai.3gp"
scp root@192.168.0.90:"/home/src/10329/g0196/lh/10xiazai/h263.3gp"
scp root@192.168.0.90:"/home/src/101117/060/090/1011.3gp"
scp root@192.168.0.90:"/home/src/10520/056/0590/99833/10x_04/0_0_3.3gp"
[root@station90 file]# sed-i"1,1s/^//#/!//bin//bash/n/g" scp.sh//对文件加上#!/bin/bash
[root@station90 file]# cat scp.sh
#!/bin/bash
scp root@192.168.0.90:"/home/src/10329/g0197/k/19xiazai/h264.3gp""/home/dst/1038/g07/k/3/10290upload/ h264.3gp"
scp root@192.168.0.90:"/home/src/10327/g0194/10ng/h264/ xiazai.3gp""/home/dst/10327/g04/10ng/ h264/ upload.3gp"
scp root@192.168.0.90:"/home/src/10329/g0196/lh/10xiazai/h263.3gp""/home/dst/1038/g06/lhppww/10upload/ h263.3gp"
scp root@192.168.0.90:"/home/src/101117/060/090/1011.3gp""/home/dst/101117/06g090/1011.3gp"
scp root@192.168.0.90:"/home/src/10520/056/0590/99833/10x_04/0_0_3.3gp""/home/dst/1052g056/0590/33/10x_04/ 0_0_3.3gp"
[root@station90 file]# chmod+x scp.sh
[root@station90 file]#./scp.sh//执行脚本,看过去是都成功了吧,但是……
19xiazai h264.3gp 100% 0 0.0KB/s 00:00
10ng h264 xiazai.3gp 100% 0 0.0KB/s 00:00
10xiazai h263.3gp 100% 0 0.0KB/s 00:00
1011.3gp 100% 0 0.0KB/s 00:00
10x_04 0_0_3.3gp 100% 0 0.0KB/s 00:00
[root@station90 file]#
[root@station90 file]# cd/home/dst/1038/g07/k/3/
[root@station90 3]# ls//看到没有,复制到本地的文件有了/
10290upload/ h264.3gp
[root@station90 dst]# pwd
/home/dst
[root@station90 dst]# find./-type f
./10327/g04/10ng/ h264/ upload.3gp
./1038/g07/k/3/10290upload/ h264.3gp
./1038/g06/lhppww/10upload/ h263.3gp
./1052g056/0590/33/10x_04/ 0_0_3.3gp
[root@station90 dst]# find./-type f-exec rm{}/;//删除复制过来错误的文件
[root@station90 dst]# find./-type f
[root@station90 file]# cat src_file.txt//下面的步骤是正确的,其实只需要对src_file.txt文件的空格加上/进行转义,对本地
dst_file.txt文件只需要在文件的开头结尾加上双引号,就好了
/home/src/10329/g0197/k/19xiazai h264.3gp
/home/src/10327/g0194/10ng h264 xiazai.3gp
/home/src/10329/g0196/lh/10xiazai h263.3gp
/home/src/101117/060/090/1011.3gp
/home/src/10520/056/0590/99833/10x_04 0_0_3.3gp
[root@station90 file]# sed-i"s//////g" src_file.txt
[root@station90 file]# cat src_file.txt
/home/src/10329/g0197/k/19xiazai/ h264.3gp
/home/src/10327/g0194/10ng/ h264/ xiazai.3gp
/home/src/10329/g0196/lh/10xiazai/ h263.3gp
/home/src/101117/060/090/1011.3gp
/home/src/10520/056/0590/99833/10x_04/ 0_0_3.3gp
[root@station90 file]# sed-i-e"s/^/scp/ root/@192/.168/.0/.90/:/"/g"-e"s/$//"/g" src_file.txt
[root@station90 file]# cat src_file.txt
scp root@192.168.0.90:"/home/src/10329/g0197/k/19xiazai/h264.3gp"
scp root@192.168.0.90:"/home/src/10327/g0194/10ng/h264/ xiazai.3gp"
scp root@192.168.0.90:"/home/src/10329/g0196/lh/10xiazai/h263.3gp"
scp root@192.168.0.90:"/home/src/101117/060/090/1011.3gp"
scp root@192.168.0.90:"/home/src/10520/056/0590/99833/10x_04/0_0_3.3gp"
[root@station90 file]# cat dst_file.txt
/home/dst/1038/g07/k/3/10290upload h264.3gp
/home/dst/10327/g04/10ng h264 upload.3gp
/home/dst/1038/g06/lhppww/10upload h263.3gp
/home/dst/101117/06g090/1011.3gp
/home/dst/1052g056/0590/33/10x_04 0_0_3.3gp
[root@station90 file]# sed-i-e"s/^//"/g"-e"s/$//"/g" dst_file.txt
[root@station90 file]# cat dst_file.txt
"/home/dst/1038/g07/k/3/10290upload h264.3gp"
"/home/dst/10327/g04/10ng h264 upload.3gp"
"/home/dst/1038/g06/lhppww/10upload h263.3gp"
"/home/dst/101117/06g090/1011.3gp"
"/home/dst/1052g056/0590/33/10x_04 0_0_3.3gp"
[root@station90 file]# sed-i"1,1s/^//#/!//bin//bash/n/g" scp.sh
[root@station90 file]# cat scp.sh//最终的脚本样本
#!/bin/bash
scp root@192.168.0.90:"/home/src/10329/g0197/k/19xiazai/h264.3gp""/home/dst/1038/g07/k/3/10290upload h264.3gp"
scp root@192.168.0.90:"/home/src/10327/g0194/10ng/h264/ xiazai.3gp""/home/dst/10327/g04/10ng h264 upload.3gp"
scp root@192.168.0.90:"/home/src/10329/g0196/lh/10xiazai/h263.3gp""/home/dst/1038/g06/lhppww/10upload h263.3gp"
scp root@192.168.0.90:"/home/src/101117/060/090/1011.3gp""/home/dst/101117/06g090/1011.3gp"
scp root@192.168.0.90:"/home/src/10520/056/0590/99833/10x_04/0_0_3.3gp""/home/dst/1052g056/0590/33/10x_04 0_0_3.3gp"
[root@station90 file]# chmod+x scp.sh
[root@station90 file]#./scp.sh
19xiazai h264.3gp 100% 0 0.0KB/s 00:00
10ng h264 xiazai.3gp 100% 0 0.0KB/s 00:00
10xiazai h263.3gp 100% 0 0.0KB/s 00:00
1011.3gp 100% 0 0.0KB/s 00:00
10x_04 0_0_3.3gp 100% 0 0.0KB/s 00:00
[root@station90 file]# cd/home/dst
[root@station90 dst]# find./-type f//现在OK了,linux水平不行,被折磨了2天呐
./10327/g04/10ng h264 upload.3gp
./101117/06g090/1011.3gp
./1038/g07/k/3/10290upload h264.3gp
./1038/g06/lhppww/10upload h263.3gp
./1052g056/0590/33/10x_04 0_0_3.3gp