LINUX学习—文件系统及管理类命令

Windows: PE
Linux: ELF
文件系统:
rootfs:根文件系统

FHS:规定Linux应该创建哪些目录和文件
ls / 可查看根目录下一级子目录, 也可以ls /目录名:可以查看该目录下一级子目录
/boot: 系统启动相关的文件, 如内核、initrd,以及grub (bootloader)
/dev: 设备文件
设备文件:
块设备:随机访问,数据块
字符设备:线性访问,按字符为单位
特殊文件没有大小,只有两个设备号(主设备号major和次设备号minor)
/etc: 配置文件
/home:用户家目录,每个用户的家目录默认为/home/USERNAME
/root: 管理员的家目录;
/lib: 库文件及内核模块文件
/lib/modules: 内核模块文件
静态库: .a
动态库:.so (share object)
/media: 挂载点目录,通常用于挂载移动设备
/mnt: 挂载点目录,额外的临时文件系统
/misc: 杂项
/opt:可选目录,早期用于安装第三方程序的安装目录,现在都放在/usr/local
/proc:伪文件系统,启动前是空的,但启动后里面会有很多内核映射的文件
/sys:伪文件系统,跟硬件设备相关的属性映射文件,关机后该目录也是空的
/tmp:临时文件系统,每个月如果没访问 后会自动格式化,每个用户都有存放文件权限,但每个人只能删除自己文件 ;
/var:可变化的文件
/bin:可执行文件,用户命令
/sbin:可执行文件,管理命令
/usr:全局共享只读文件universal, shared, read-only
/usr/bin
/usr/sbin
/usr/lib
/usr/local:
/usr/local/bin
/usr/local/sbin
/usr/local/lib

命名规则:
1:严格区分大小写;
2:长度不能超过255个字符;
3:不能使用/当文件名(路径中有/,会导致系统读取困难:),其他任何字符都可以用

相对路径:
绝对路径:

hwclock

硬件时钟访问工具,可以显示当前时间、设置硬件时钟的时间和设置硬件时钟为系统时间,也可设置系统时间为硬件时钟的时间。

获得命令的使用帮助:
内部命令():  
    help COMMAND
外部命令:
    COMMAND--help

命令手册:manual (几乎所有命令都有手册)
man COMMAND

whatis COMMAND :查看命令在第几章节
如果命令有多个章节,可以用man num COMMAND查看

分章节:(共8章节)
1:用户命令 (/bin, /usr/bin, /usr/local/bin)(普通用户可以使用)
2:系统调用
3:库用户
4:特殊文件(设备文件)
5:文件格式(配置文件的语法)
6:游戏
7:杂项:Miscellaneous
8:管理命令(/sbin, /usr/bin, usr/local/sbin) (只有管理员才可以使用如chown)

[ ]:表示可选择的选项或参数,可要可不要;
<>:表示必须选择的选项或参数;
…:表示可以出现多次
|:表示多选1
{ }:分组,没有特殊意义;

官方在线文档:apache,hadoop
cal: calendar

MAN手册简要说明:
NAME:命令名称及功能简要说明;
SYNOPSIS:用法说明,包括可用的选项;
DESCRIPTION:命令功能的详尽说明,可能包括每一个选项的意义;
OPTIONS: 说明每一个选项的意义;
FILES:此命令相关的配置文件;  
BUGS:报告bug
EXAMPLES:使用示列
SEE ALSO:另外参照

翻屏:
向后翻一屏:SPACE
向前翻一屏:B
向下翻一行:ENTER
向上翻一行:K
查找:
/KEYWORD: 向后查找
n:下一个
N:前一个
?KEYWORD: 向前查找
n:下一个
N:前一个
q: 退出

扫描二维码关注公众号,回复: 4142971 查看本文章

如何求助不懂的命令或软件:
info COMMAND (用的不多,man命令补充);
文档:/usr/share/doc(每个软件或命令都会有一个帮助文档,存放在该目录下)
google

cal:calendar
FAQ:frequently ask question
type命令
硬件时钟
系统时钟

文件管理命令

ls
ls命令用来显示目标列表,在linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。

    -d:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表;  
    -i:显示文件索引节点号(inode)。一个索引节点代表一个文件;  
    -a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);
    -A:显示除影藏文件“.”和“..”以外的所有文件列表;  
    -C:多列显示输出结果。这是默认选项;  
    -l:与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列; 

cd
cd命令用来切换工作目录至dirname。其中dirname表示法为绝对路径或相对路径。若目录名称省略,则变换至使用者的home directory(也就是刚login时所在的目录)。另外,~也表示为home directory的意思, .则表示当前目录, ..表示目前目录位置的上一层目录。
- cd 进入用户主目录
- cd ~ 进入用户主目录
- cd - 返回进入此目录之前所在目录

type:
type命令用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令。

命令类型:
- alias:别名。
- keyword:关键字,shell保留字。
- function:函数,shell函数。
- builtin:内建命令,shell内建命令。
- file:文件,磁盘文件,外部命令。
- unfound:没有找到。

date: 时间管理
显示系统时间,也可以用来修改时间

%H 小时,24小时制(00~23)
%I 小时,12小时制(01~12)
%k 小时,24小时制(0~23)
%l 小时,12小时制(1~12)
%M 分钟(00~59)
%p 显示出AM或PM
%r 显示时间,12小时制(hh:mm:ss %p)
%s 从1970年1月1日00:00:00到目前经历的秒数
%S 显示秒(00~59)
%T 显示时间,24小时制(hh:mm:ss)
%X 显示时间的格式(%H:%M:%S)
%Z 显示时区,日期域(CST)
%a 星期的简称(Sun~Sat)
%A 星期的全称(Sunday~Saturday)
%h,%b 月的简称(Jan~Dec)
%B 月的全称(January~December)
%c 日期和时间(Tue Nov 20 14:12:58 2012)
%d 一个月的第几天(01~31)
%x,%D 日期(mm/dd/yy)
%j 一年的第几天(001~366)
%m 月份(01~12)
%w 一个星期的第几天(0代表星期天)
%W 一年的第几个星期(00~53,星期一为第一天)
%y 年的最后两个数字(1999则是99)
%Y 显示完整的年份
%n 表示换行

date练习:
使用date单独获取系统当前的年份、月份、日、小时、分钟、秒
年:date +%y或date +%Y 或date “this year is %y”
月:date +%m或date +%B|b|h
日:date +%d
小时:date +%H|I|k|l
分钟:date +%M
秒:date +%S
date +%F==date +%Y-%m-%d(年月日如2018-08-15)
date +%T==date +%H:%M:%S(小时:分钟:秒如15:27:01)
date +%R==date +%H:%M

pwd
pwd命令以绝对路径的方式显示用户当前工作目录。命令将当前目录的全路径名称(从根目录)写入标准输出。全部目录使用/分隔。第一个/表示根目录,最后一个为当前目录。执行pwd命令可立刻得知目前所在目录的绝对路径。

mkdir
mkdir命令用来创建空目录

    -p或--parents:递归创建目录  
    -v或--verbose:显示命令的详细执行过程  
命令行展开(花括号展开):mkdir -pv /mnt/test/x/m /mnt/test/x/y==mkdir -pv  /mnt/test /{x/m,y}  
    mkdir -pv /mnt/test/{a, d}_{b,c}即可在test命令下创建a_b, a_c, b_d, c_d目录,花括号展开活学活用    

tree
tree命令以树状图列出目录的内容。

rmdir
删除目录,只能删除空目录

    -p或--parents:递归删除空目录  
    -v或--verbose:显示命令的详细执行过程  

* rm*
rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只能删除整个链接文件,而原有文件保持不变。
注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以在删除文件之前,最好再看一下文件的内容,确定是否真要删除。

        -i:删除已有文件或目录之前先询问用户;    
        -f:强制删除文件或目录;  
        -r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
        -v:显示指令的详细执行过程。

* touch*
touch命令有两个功能:
一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),主要用于改变时间轴,;
二是用来在没有文件的时候会自动创建一个文件,加-c选项可选择不创建新文件;

         -a:  或--time=atime或--time=acess或--time=use只更改存取时间;  
         -m 或--time=mtime或--time=modify只更改变动时间 
         -t:日期时间,使用指定的日期时间,而非现在的时间;  
         -c或--no-creat 不建立任何文件;   

stat
stat命令用于显示文件的状态信息,包括三个时间轴,上次访问、上次修改、上次改变时间;其输出的信息比ls的更为详细;
创建文件和目录不能同名,否则会报错
创建文件,可以使用文本编辑器

* file*
用来探测给定文件的类型。file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程。

###### 复制和移动文件
cp
cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将报错。

-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。

mv
mv命令用来对文件或目录重新命名,或者将文件从一个目录移动到另一个目录中。source表示源文件或目录,target表示目录文件或目录。如果将一个文件移动到一个已经存在的目录文件中,则目标文件的内容将被覆盖。
mv命令可以用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。源文件被移至目标文件有两种不同的结果:
1.如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。
2.如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖已存在的同名文件。如果源文件和目标文件在同一个目录下,mv的作用就相当于重命名。
注意:mv是重命名也可以叫搬家,文件个数并未增加,而cp则是复制拷贝,文件数相应的增加。

--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
--strip-trailing-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

* install*
install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户。install命令和cp命令类似,都可以将文件/目录拷贝到指定的地点。但是,install允许你控制目标文件的属性。install通常用于程序的makefile,使用它来将程序拷贝到目标(安装)目录。

文本查看命令

cat
cat命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,类似于下的type命令。
cat [OPTION] FILE1 FILE2…
注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。
-n或–number:由1开始对所有输出的行数编号;
-E:显示每一行的结束符(对于linux而言,文本 的行结束符是$符)

tac
tac命令用于将文件以行为单位,反序输出,即第一行最后显示,最后一行先显示。

xargs
是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs的默认命令是echo,空格是默认定界符。这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs是构建单行命令的重要组件之一。
-n:该选项表示将xargs生成的命令行参数,每次传递几个参数给其后面的命令执行,例如如果xargs从标准输入中读入内容,然后以分隔符分割之后生成的命令行参数有10个,使用 -n 3 之后表示一次传递给xargs后面的命令是3个参数,因为一共有10个参数,所以要执行4次,才能将参数用完。
-d:指定分隔符;
-E:指定不打印字符串;

more**
more(一般可以理解为向后翻,因为如果翻到最后面的话就不能向前翻了,而且翻到最后时就直接退出了)命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比:–More–(XX%)可以用下列不同的方法对提示做出回答
按Space键:显示文本的下一屏内容。
按Enter键:只显示文本的下一行内容。
按斜线符:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。/
按H键:显示帮助屏,该屏上有相关的帮助信息。
按B键:显示上一屏内容。
按Q键:退出more命令。

-s:将连续多个空行压缩成一行显示;  

less
(可以向前翻,即使翻到最后,而且其不会直接退出,必须按Q键才能退出查看,用的比more多)
与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。man中能用的选项都能用。
-S:在单行显示较长的内容,而不换行显示;
-N:每一行行首显示行号;
-s:将连续多个空行压缩成一行显示;

head
用于显示文件的开头的内容。默认显示前10行内容。

    -n(数字):指定显示前几行内容;  
    -c(字符数):指定显示头部内容的字符数;  
    -v:总是显示文件名的头信息;  
    -q:不显示文件名的头信息。  

tail
用于显示文件尾部内容,默认后10行(注意空白行也是一行);

-n:  :指定显示后几行内容;
-f(follow):查看文件尾部,不退出,等待显示后续追加至此文件的新内容。  
文本处理

cut
cut命令用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容,类似于type命令。

-d:指定分隔符,默认为空格(1个);   
-f:指定要显示的字段;  
    -f 1,3(显示第一个和第三个字段);  
    -f 1-3(显示1到3字段);  
-c:仅显示行中指定范围的字符;

注意:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如 cut file1 file2>file3把文件file1和file2的内容合并起来,然后通过重定向到file3中;
当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。

join:合并
用来将两个文件中,指定栏位内容相同的行连接起来。找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。
-1<栏位>:连接[文件1]指定的栏位; join -1 1 -2 1 file1 file2(-1表示第一个文件,1表示第一列,-2表示第二个文件,2表示第二列,说明1/2文件的第一列相同进行合并)
-2<栏位>:连接[文件2]指定的栏位;
-a:<1或2>:除了显示原来输出内容之外,还显示指令文件中没有相同栏位的行;join -a 1 file1 file2(表示除了合并相同的行外,还显示第一个文件中不同的行)

sort
在linux中非常常用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。

与cut命令一致,并不影响原文件的内容,默认排序为升序进行排序(依靠字符在ASCII中的数值),比较每一个字符的大小,而并不是按数值大小进行排序,加参数-n可以进行数值排序;

```
-n:按数值大小排序;  
-r:降序排序;  
-t:字段分隔符;  
-k:以哪个字段为关键字进行排序(sort -t: -k3 /etc/passwd)  
-u(unique):排序后相同的行只显示一次;
-f:排序时忽略字符大小写;
```

uniq
用于报告或忽略文件中的重复行,一般与sort命令结合使用。

只能识别相邻且一样的行才是重复的行,否则照样会显示(相当于sort -u)

    -d:只显示重复行;  
    -D:显示所有重复的行;  
    -c:显示每一行且会显示每一行重复次数 

wc
wc(word count)用来计算数字。利用wc指令我们可以计算文件的Bytes数、字数或是列数,若不指定文件名称,或是所给与的文件名为“-”,则wc指令会从标准输入设备读取数据。(注意空格也是字符)

    -c或--bytes或--chars:只显示Bytes数;  
    -l或--lines:只显示行数;  
    -w或--words:只显示字数。  
    -L:表示最长的一行包含多少个字符;  


表示/etc/passwd文件下有48行,72个单词,2540个字节;

tr
tr命令可以对来自标准输入的字符进行替换、压缩和删除。可将一组字符变成另一组字符,经常用来编写优美的单行命令,作用强大。
tr [OPTION]…SET1 [SET2](后面不能直接跟文件,只有用输入重定向达到目的,逐个字符进行处理)
tr ‘a-z’ A-Z’

磁盘管理命令

du:显示目录下每个文件占用磁盘的大小
-s:显示目录占用磁盘大小
-h:以人类可读性单位显示

df:显示整个磁盘分区使用情况
-i或–inodes:显示inode的信息
-P或–portability:使用POSIX的输出格式,即一行的内容放在同一行显示,不换行;
-h或–human-readable以K,M,G为单位,提高信息的可读性。

压缩、解压

压缩、解压缩命令
压缩格式:gz,bz2,xz,zip,Z

压缩算法:算法不同,压缩比(压缩后的文件和原文件相比)也会不同;

compress: 压缩后的文件名为FILENAME.Z,压缩比很小,已经很少用了 uncompress: 只能压缩文件,但不能压缩目录,只能压缩目录里的文件,且压缩后会自动将源文件删除

gzip
.gz 压缩
格式:gzip /PATH/TO/SOMEFILE:压缩完成后会删除原文件
-d==gunzip
-#:1-9,指定压缩比,默认为6;
gunzip:解压缩 格式: gunzip /PATH/TO/SOMEFILE.gz:解压完成后会删除原文件
zcat:查看压缩文件 格式:zcat /PATH/TO/SOMEFILE.gz 不解压的情况,查看文本文件的内容

bzip2:
.bz2
比gzip有更大压缩比的压缩工具,但对小文件优势不明显; 使用格式近似,也不能压缩目录,压缩后会删除原文件 bzip2 /PATH/TO/SOMEFILE
-d==bunzip2:解压缩 bunzip /PATH/TO/SOMEFILE
-#:1-9,指定压缩比,默认为6;
bzcat:不解压时查看文本文件
-k/–keep:压缩时保留原文件

xz:
.xz与前面二者用法一致
-d
-#
-k
unxz:解压缩
xzdec:解压缩
xzcat

zip
可压缩目录,压缩比不大;既归档也压缩的工具 zip FILENAME.zip(压缩后要保留的文件) FILE1 FILE2….压缩后不删除原文件 unzip FILENAME.zip archive:归档,归档本身并不压缩

tar:
归档工具,不压缩
-c:创建归档文件
-f FILE.tar:操作的归档文件
-x:展开归档
–xattrs:归档时,保留文件的扩展属性信息
-t:不展开归档,直接查看归档了哪些文件

-zcf:归档并调用gzip压缩   
-zxf:调用gzip解压缩并展开归档,-z选项可省略  

-jcf: bzip2 
-jxf:  

xz:要创建或解压tar.xz时不能直接创建为.tar.xz,而是先tar -cf 创建为.tar再xz -Jcf:xz -Jxf 好用的备份工具 cpio:归档工具,古老的工具

read:从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合。该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开。
-p”PROMPT”:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒);

文件查找命令

赋值表达式
- +=(相当于++ 如let i+=1相当于 let i++)
- +=
- -=相当于I–
- ++I – I
- *=
- /=
- %=
写一个脚本:
计算100以内所有奇数的和以及所有偶数的和:分别显示之;
sumji=0 sumou=0 for i in {1..100};do yu= sum i yu -eq 0 ];then
sumou+yu
grep, egrep,fgrep:文本查找

locate:
非实时,模糊匹配,在全系统中查找,查找是根据全系统文件数据库进行的; updatedb,手动生成文件数据库,一般新系统时需要用;
速度快(一般只是普通的用法,用得很少)

find:
实时 精确 支持众多查找标准 遍历指定目录中的所有文件完成查找,速度慢:
- find 查找路径,查找标准,查找到以后的处理动作
- 查找路径:可省略,默认为当前目录
- 查找标准:默认为指定路径下的所有文件
- 处理运作:默认为显示

  1. 查找标准(匹配标准):
    • 1) -name’FILENAME’:对文件名作精确匹配
    • 2)文件名通配:
    • *:匹配任意长度的任意字符;
    • ?:匹配任意单个字符;
    • [ ]:匹配指定范围内的任意单个字符;
    • -iname ‘FILENAME’:文件名匹配时不区分大小写
    • -regex PATTERN:基于正则表达式进行文件名匹配
    • -user USERNAME:根据用户的属主进行查找
    • -group GROUPNAME:根据属组查找
    • -uid UID:根据UID查找(主要应用于用户被删时通过用户名查找不到,需要用ID号才能找到)
    • -gid GID:根据GID查找
    • -nouser:查找没有属主的文件
    • -nogroup:查找没有属组的文件
    • -type
    • f:普通文件
    • d:目录
    • c:字符设备
    • b:块设备
    • l:链接文件
    • p:管道设备
    • s:套接设备
    • -size
      • 数字+单位
        [+(表示大于)|-(表示小于)]numK (不加加减号时表示精确查找,但并不是认为是一个精确的数值,表示在那附近的也可以被查找到,如10k表示9-10k的都可以被查找到)
        numM
        numG

组合条件:
- -a:与
- -o:或
- -not:非 find /etc -not -type d

如:/tmp目录,不是目录,并且还不能套接字类型的文件
find /tmp -not -type d -a -type s
如: /tmp/test目录下,属主不是user1,也不是user2
find /tmp -not -user user1 -a -not -user user2或者find /tmp -not (-user user1 -o -user user2)

  • -mtime:修改了的时间
  • -ctime:更改时间
  • -atime:访问时间
    备注:[+|-] ([+5|-5] +5表示至少5天,-5表示5天之内,不加表示正好5天)默认单位均为天
  • -mmin
  • -cmin
  • -amin(分钟)

-perm MODE (-|/不加符号表示精确匹配) -MODE:只有文件权限完全包含MODE时才能显示 /MODE:任意位权限匹配就可以

2. 查找动作
- 默认为-print:显示
- -ls: 类似ls -l的形式显示每一个文件的详细
- -ok COMMAND {}\; (必须用\;进行结尾,否则语法错误;每一次操作都要用户确认
- -exec COMMAND {} \;(不需要用户确认)只要引用原来的名字就要用{}

  • -xargs(功能更强大),本身可以不用占位符
    xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs的默认命令是echo,空格是默认定界符。这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs是构建单行命令的重要组件之一。
    echo folder{1..5}/folder{1..5}|xargs -n 1 cp ./me.txt
    参数:
    • -d:指定分隔符;
      echo '11@22@33' |xargs -d '@' echo 输出 11 22 33
    • -p:在执行操作时会先询问是否执行(相当于rm中-i参数)
    • -n:指定每次传递几个参数给后面的命令;
      echo '11@22@33@44@55@66@77@88@99@00'|xargs -d '@' -n 3 echo
      输出: 11 22 33 \n(换行) 44 55 66\n 77 88 99\n 00
    • -E:该选项指定一个字符串,当xargs解析出多个命令行参数时,如果搜索到-E指定的命令行参数,则只会讲-E指定命令行参数之前的参数(不包括-E指定的参数及其字符串)传递给xargs后面的命令;
      例: echo '11 22 33'|xargs -E '33'

猜你喜欢

转载自blog.csdn.net/ihblxh/article/details/81980454