待手绾青丝

待手绾青丝

待手绾青丝

庭中三千梨花树,再无一朵入我心。 心中只你一朵,似在心中,不在心中,可望可念可想不可及。

109 文章数
2 评论数
来首音乐
光阴似箭
今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

三章四节:文件查找及文件上传下载

2021-12-31 / 0 评论 / 485 阅读 / 0 点赞

文件查找及文件的上传和下载

一、命令所属文件查找

[root@sholdboy ~]# which ip
/usr/sbin/ip
[root@sholdboy ~]# which mysql
/usr/local/mysql/bin/mysql 
[root@sholdboy ~]# echo $PATH
/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#一些命令的路径都配置到了环境变量PATH里面

二、查找目录下的文件find

1、语法格式

find [-h][-l][-p][-D debugopts][-Olevel] [pathname]       [expression]	
find 如何处理符号的连接  需要查找的路径  操作语句(参数(options) 限定的条件(tests) 执行的动作(actions))

2、pathname模块

命令查找的目录路径,“.”代表当前目录。“/”表示当前路径

3、options参数模块

-maxdepth levels	查找的最大目录级数,levels为自然数

4、tests限定条件模块

-type查找某一类型的模块
	b	#块设备文件
	c	#字符设备文件
	d	#目录
	p	#管道文件
	i	#符号链接文件
	f	#普通文件
	s	#socket文件
	D	#door

5、actions执行动作模块

-print		#找到后输出
-ls			#找到后列出来
-delete		#找到后删除
-exec		#对配置的文件直接执行改参数所给出的shell命令
-ok			#和exec作用相同,但执行命令之前都会让用户确定是否先执行
-!		   #取反
-a			#取交集and
-o			#取并集or

6、分类

1.按照文件名查找

find /etc (路径) -name "文件名" 	#找具体的文件
find /etc (路径) -iname "文件名"   #i 不区分大小写 
find /etc (路径) -iname "文件前缀*" 	#* 例如:ifcfg* :查找以ifcfg开头的文件

2.按照文件大小

find /etc (路径) -size +3M  #大于3m的文件
find /etc (路径) -size 3M  #等于于3m的文件
find /etc (路径) -size -3M  #小于3m的文件
find /etc (路径) -size +3M  -ls(动作) #找到大于3m的文件并ls

3.指定查找文件深度

#-maxdepth		#查找的最大目录级数find / -maxdepthfind / -maxdepth 5 -a -name "ifcfg-eth0" # -a并且,-o或者

4.按照文件属主、属组找

find /home(路径) -user www(属主) 	#找属主是www的文件find /home(路径) -group it(属组) 	#找属组是it的文件find /home(路径) -user www(属主) -group it(属组) #找属主是www且属组是it的文件find /home(路径) -user www -a -group it   #同上find /home(路径) -user www -o -group it	 #找属主是www或属组是it的文件find /home(路径) -nouser			#查找没有有效属主的文件,即该文件的属主在/etc/passwd中不存在find /home(路径) -nogroup			#查找没有有效属组的文件,即该文件的属组在/etc/group中不存在find /home(路径) -nouser -o -nogroup		#查找没有有效属主或属主的文件,即该文件的属组在/etc/passwd或/etc/group中不存在中不存在

5.按照文件类型查找

find /dev(路径) -type f   #f 普通文件find /dev(路径) -type d	#d 目录find /dev(路径) -type l	#l 链接find /dev(路径) -type b	#b 快设备find /dev(路径) -type c	#c 字符设备find /dev(路径) -type s #s 套接字find /dev(路径) -type p	#p 管道文件

6.根据Inode号查找

[root@xiaowu ~]# find / -inum 1811/sys/devices/LNXSYSTM:00/device:00/PNP0A03:00/device:02/PNP0C0F:01/power/runtime_suspended_time

7、Xargs

1.介绍

xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令,例如:
find /sbin -perm +700 |ls -l       #这个命令是错误的find /sbin -perm +700 |xargs ls -l   #这样才是正确的

2.命令格式

somecommand |xargs -item  command

3.参数选项

-a 	file 从文件中读入作为 stdin-e 	flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。-p 	当每次执行一个argument的时候询问一次用户。-n 	num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。-t 	表示先打印命令,然后再执行。-i 	或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。-r 	no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。-s 	num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。-L 	num 从标准输入一次读取 num 行送给 command 命令。-l 	同 -L。-d 	delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。-x 	exit的意思,主要是配合-s使用。。-P 	修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧。

4.实例

1)将文件多行转化为单行输出
[root@xiaowu ~]# cat test.txta b c d e f gh i j k l m no p qr s tu v w x y z[root@xiaowu ~]# cat test.txt |xargsa b c d e f g h i j k l m n o p q r s t u v w x y z
2)指定每行有多少数据(指定有多少列)
[root@xiaowu ~]# cat test.txt |xargs -n3a b cd e fg h ij k lm n op q rs t uv w xy z[root@xiaowu ~]# cat test.txt |xargs -n4a b c de f g hi j k lm n o pq r s tu v w xy z
3)-d:指定处理间隔符
[root@xiaowu ~]# echo "xiaowuxiaowuxiaowu"|xargs -dx iaowu iaowu iaowu[root@xiaowu ~]# echo "xiaowuxiaowuxiaowu"|xargs -dx -n2 iaowuiaowu iaowu
4)复制txt文件到/tmp目录下
[root@xiaowu ~]# ls *.txt|xargs -n1 -I {} cp {} /tmp[root@xiaowu ~]# ll /tmptotal 20-rw-r--r-- 1 root root    0 Aug 17 15:49 1.txt-rw-r--r-- 1 root root    0 Aug 17 15:49 2.txt-rw-r--r-- 1 root root    0 Aug 17 15:49 3.txt-rw-r--r-- 1 root root   52 Aug 17 15:49 test.txt

5.find结合xargs使用

1)根据条件找到并删除
[root@xiaowu ~]# lltotal 4-rw-------. 1 root root 1703 Mar 25 08:58 anaconda-ks.cfgdrwxr-xr-x  2 root root    6 Aug 17 15:28 xiaowu.txt[root@xiaowu ~]# find . -name "xiao*.txt" |xargs rm -rf[root@xiaowu ~]# lltotal 4-rw-------. 1 root root 1703 Mar 25 08:58 anaconda-ks.cfg
2)复制网卡配置文件到家目录下
[root@xiaowu ~]# find /etc -name "ifcfg-eth0" |xargs -I {} cp -rf {} /root[root@xiaowu ~]# lltotal 12-rw-r--r--  1 root root    0 Aug 17 15:34 1.txt-rw-r--r--  1 root root    0 Aug 17 15:34 2.txt-rw-r--r--  1 root root    0 Aug 17 15:34 3.txt-rw-------. 1 root root 1703 Mar 25 08:58 anaconda-ks.cfg-rw-r--r--  1 root root  262 Aug 17 15:52 ifcfg-eth0-rw-r--r--  1 root root   52 Aug 17 15:42 test.txt
3)将家目录网卡配置文件权限改为666
[root@xiaowu ~]# find /root -name "ifc*"|xargs -I {} chmod 666 {}[root@xiaowu ~]# lltotal 12-rw-r--r--  1 root root    0 Aug 17 15:34 1.txt-rw-r--r--  1 root root    0 Aug 17 15:34 2.txt-rw-r--r--  1 root root    0 Aug 17 15:34 3.txt-rw-------. 1 root root 1703 Mar 25 08:58 anaconda-ks.cfg-rw-rw-rw-  1 root root  262 Aug 17 15:52 ifcfg-eth0-rw-r--r--  1 root root   52 Aug 17 15:42 test.txt

三、上传与下载

1、下载

1.wget命令

1)安装
[root@xiaowu ~]# yum install -y wget
2)语法
wget [选项]... [URL]...
3)参数选项
①启动参数
-V,  --version           显示 Wget 的版本信息并退出。-h,  --help              打印此帮助。-b,  --background        启动后转入后台。-e,  --execute=COMMAND   运行一个“.wgetrc”风格的命令。
②日志和输入文件
-o,  --output-file=FILE    将日志信息写入 FILE。-a,  --append-output=FILE  将信息添加至 FILE。-d,  --debug               打印大量调试信息。-q,  --quiet               安静模式 (无信息输出)。-v,  --verbose             详尽的输出 (此为默认值)。-nv, --no-verbose          关闭详尽输出,但不进入安静模式。	 --report-speed=TYPE   Output bandwidth as TYPE.  TYPE can be bits.-i,  --input-file=FILE     下载本地或外部 FILE 中的 URLs。-F,  --force-html          把输入文件当成 HTML 文件。-B,  --base=URL            解析与 URL 相关的						   HTML 输入文件 (由 -i -F 选项指定)。	 --config=FILE         Specify config file to use.
③下载
-t,  --tries=NUMBER            设置重试次数为 NUMBER (0 代表无限制)。	 --retry-connrefused       即使拒绝连接也是重试。-O,  --output-document=FILE    将文档写入 FILE。-nc, --no-clobber              skip downloads that would download to                               existing files (overwriting them).-c,  --continue                断点续传下载文件。     --progress=TYPE           选择进度条类型。-N,  --timestamping            只获取比本地文件新的文件。--no-use-server-timestamps     不用服务器上的时间戳来设置本地文件。-S,  --server-response         打印服务器响应。      --spider                  不下载任何文件。-T,  --timeout=SECONDS         将所有超时设为 SECONDS 秒。     --dns-timeout=SECS        设置 DNS 查寻超时为 SECS 秒。     --connect-timeout=SECS    设置连接超时为 SECS 秒。     --read-timeout=SECS       设置读取超时为 SECS 秒。-w,  --wait=SECONDS            等待间隔为 SECONDS 秒。     --waitretry=SECONDS       在获取文件的重试期间等待 1..SECONDS 秒。     --random-wait             获取多个文件时,每次随机等待间隔                               0.5*WAIT...1.5*WAIT 秒。     --no-proxy                禁止使用代理。-Q,  --quota=NUMBER            设置获取配额为 NUMBER 字节。     --bind-address=ADDRESS    绑定至本地主机上的 ADDRESS (主机名或是 IP)。     --limit-rate=RATE         限制下载速率为 RATE。     --no-dns-cache            关闭 DNS 查寻缓存。     --restrict-file-names=OS  限定文件名中的字符为 OS 允许的字符。     --ignore-case             匹配文件/目录时忽略大小写。-4,  --inet4-only              仅连接至 IPv4 地址。-6,  --inet6-only              仅连接至 IPv6 地址。     --prefer-family=FAMILY    首先连接至指定协议的地址                               FAMILY 为 IPv6,IPv4 或是 none。     --user=USER               将 ftp 和 http 的用户名均设置为 USER。     --password=PASS           将 ftp 和 http 的密码均设置为 PASS。     --ask-password            提示输入密码。     --no-iri                  关闭 IRI 支持。     --local-encoding=ENC      IRI (国际化资源标识符) 使用 ENC 作为本地编码。     --remote-encoding=ENC     使用 ENC 作为默认远程编码。     --unlink                  remove file before clobber.
④目录
-nd, --no-directories           不创建目录。-x,  --force-directories        强制创建目录。-nH, --no-host-directories      不要创建主目录。     --protocol-directories     在目录中使用协议名称。-P,  --directory-prefix=PREFIX  以 PREFIX/... 保存文件     --cut-dirs=NUMBER          忽略远程目录中 NUMBER 个目录层。
⑤Http选项
     --http-user=USER        设置 http 用户名为 USER。     --http-password=PASS    设置 http 密码为 PASS。     --no-cache              不在服务器上缓存数据。     --default-page=NAME     改变默认页                             (默认页通常是“index.html”)。-E,  --adjust-extension      以合适的扩展名保存 HTML/CSS 文档。     --ignore-length         忽略头部的‘Content-Length’区域。     --header=STRING         在头部插入 STRING。     --max-redirect          每页所允许的最大重定向。     --proxy-user=USER       使用 USER 作为代理用户名。     --proxy-password=PASS   使用 PASS 作为代理密码。     --referer=URL           在 HTTP 请求头包含‘Referer: URL’。     --save-headers          将 HTTP 头保存至文件。-U,  --user-agent=AGENT      标识为 AGENT 而不是 Wget/VERSION。     --no-http-keep-alive    禁用 HTTP keep-alive (永久连接)。     --no-cookies            不使用 cookies。     --load-cookies=FILE     会话开始前从 FILE 中载入 cookies。     --save-cookies=FILE     会话结束后保存 cookies 至 FILE。     --keep-session-cookies  载入并保存会话 (非永久) cookies。     --post-data=STRING      使用 POST 方式;把 STRING 作为数据发送。     --post-file=FILE        使用 POST 方式;发送 FILE 内容。     --content-disposition   当选中本地文件名时                             允许 Content-Disposition 头部 (尚在实验)。     --content-on-error      output the received content on server errors.     --auth-no-challenge     发送不含服务器询问的首次等待                             的基本 HTTP 验证信息。
⑥HTTPS (SSL/TLS) 选项:
--secure-protocol=PR     choose secure protocol, one of auto, SSLv2,                         SSLv3, TLSv1, TLSv1_1 and TLSv1_2.--no-check-certificate   不要验证服务器的证书。--certificate=FILE       客户端证书文件。--certificate-type=TYPE  客户端证书类型,PEM 或 DER。--private-key=FILE       私钥文件。--private-key-type=TYPE  私钥文件类型,PEM 或 DER。--ca-certificate=FILE    带有一组 CA 认证的文件。--ca-directory=DIR       保存 CA 认证的哈希列表的目录。--random-file=FILE       带有生成 SSL PRNG 的随机数据的文件。--egd-file=FILE          用于命名带有随机数据的 EGD 套接字的文件。
⑦FTP 选项:
--ftp-user=USER         设置 ftp 用户名为 USER。--ftp-password=PASS     设置 ftp 密码为 PASS。--no-remove-listing     不要删除‘.listing’文件。--no-glob               不在 FTP 文件名中使用通配符展开。--no-passive-ftp        禁用“passive”传输模式。--preserve-permissions  保留远程文件的权限。--retr-symlinks         递归目录时,获取链接的文件 (而非目录)。
⑧递归下载
-r,  --recursive          指定递归下载。-l,  --level=NUMBER       最大递归深度 (inf 或 0 代表无限制,即全部下载)。     --delete-after       下载完成后删除本地文件。-k,  --convert-links      让下载得到的 HTML 或 CSS 中的链接指向本地文件。--backups=N   before writing file X, rotate up to N backup files.-K,  --backup-converted   在转换文件 X 前先将它备份为 X.orig。-m,  --mirror             -N -r -l inf --no-remove-listing 的缩写形式。-p,  --page-requisites    下载所有用于显示 HTML 页面的图片之类的元素。     --strict-comments    用严格方式 (SGML) 处理 HTML 注释。
⑨递归接受/拒绝
-A,  --accept=LIST               逗号分隔的可接受的扩展名列表。-R,  --reject=LIST               逗号分隔的要拒绝的扩展名列表。     --accept-regex=REGEX        regex matching accepted URLs.     --reject-regex=REGEX        regex matching rejected URLs.     --regex-type=TYPE           regex type (posix|pcre).-D,  --domains=LIST              逗号分隔的可接受的域列表。     --exclude-domains=LIST      逗号分隔的要拒绝的域列表。     --follow-ftp                跟踪 HTML 文档中的 FTP 链接。     --follow-tags=LIST          逗号分隔的跟踪的 HTML 标识列表。     --ignore-tags=LIST          逗号分隔的忽略的 HTML 标识列表。-H,  --span-hosts                递归时转向外部主机。-L,  --relative                  只跟踪有关系的链接。-I,  --include-directories=LIST  允许目录的列表。--trust-server-names             use the name specified by the redirection                                 url last component.-X,  --exclude-directories=LIST  排除目录的列表。-np, --no-parent                 不追溯至父目录。
4)实例
①下载单个文件
wget http://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
②-O参数,指定文件名称
wget -O wordpress.tar.gz  http://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
③-c参数,断点续传
wget -c https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
④-b参数,后台下载
wget -b https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
文章不错,扫码支持一下吧~
上一篇 下一篇
评论
最新回复
文章目录
每日一句