linux常用命令-4文件管理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenzhengfeng/article/details/81780637

以下为linux常用的命令举例。

(注:#后面的为注释,输入命令时不要写)

(四)文件管理

4.1 cat(把文件传到基本输出)

cat file.txt  #显示文件file.txt的内容
cat -n file.txt  #显示文件file.txt的内容,由1开始对所有输出的行数编号
cat -b file.txt  #显示文件file.txt的内容,由1开始对所有输出的行数编号,不对空白行编号
cat -s file.txt  #当遇到有连续两行以上的空白行,就代换为一行的空白行
cat > file.txt  #将命令行输入的内容保存为文件file.txt
cat >> file.txt  #将命令行输入的内容追加到文件file.txt
cat file1.txt > file2.txt  #将文件file1.txt的内容复制到文件file2.txt
cat file1.txt >> file2.txt  #将文件file1.txt的内容追加到文件file2.txt
cat /dev/null > file.txt  #将file.txt文件清空
cat a.txt b.txt > c.txt  #将文件a.txt与b.txt的内容合并为文件c.txt
cat proc.tar.gz* > proc.tar.gz #将各个分卷压缩包合成为一个proc.tar.gz文件
cat proc.tar.gz* | tar -xzf - #将各个分卷压缩包解压到当前目录

4.2 chgrp(更改文件或目录的所属群组)

chgrp grp proc  #将proc文件或目录的群组设为grp
chgrp grp proc -R  #将目录proc及包含的所有文件或目录的群组设为grp

4.3 chmod(更改文件或目录的权限)

chmod 755 proc -R  #将目录proc的权限改为rwxr-xr-x
chmod +x proc  #为文件或目录proc增加可执行权限
chmod -x proc  #去掉文件或目录proc的可执行权限
chmod =r proc  #将文件或目录设为只读权限r--r--r--

注:有关权限代号的部分,列表于下:
 r:读取权限,数字代号为"4"。
 w:写入权限,数字代号为"2"。
 x:执行权限,数字代号为"1"。
 -:不具任何权限,数字代号为"0"。

4.4 chown(更改文件或目录的拥有者或所属群组)

chown sun proc -R  #将目录proc及包含的所有目录和文件的拥有者设为sun用户
chown sun.grp proc -R  #将目录proc及包含的所有目录和文件的拥有者设为sun用户,所属群组为grp组
chown sun.grp *  -R  #将当前目录下所有的文件和目录的拥有者设为sun用户,所属群组为grp组

4.5 cp(复制文件或目录)

cp proc1/file.txt file.txt  #将目录proc1中的文件file.txt复制到当前目录
cp -r proc1/* proc2  #将目录proc1下的所有文件和目录复制到proc2目录,操作之后proc1和proc2目录的结构是一致的
cp file.txt /home/sun/  #将文件file.txt复制到/home/sun/目录下
cp f1.txt f2.txt /home/sun/  #将文件f1.txt与f2.txt文件复制到/home/sun/目录下
cp ../file.txt file.txt  #将上一级目录中的文件file.txt复制到当前目录
cp ../file.txt .  #同上
cp proc1/file.txt new.txt  #将目录proc1中的文件file.txt复制到当前目录,并重命名为new.txt
cp -P proc1/file.ln new.ln  #如果被复制的文件为链接文件,则应添加-P选项;如果省略-P选项,复制后的new.ln文件将是原链接文件指向的文件,而非链接文件本身
cp -rPu proc1/* proc2  #将目录proc1下的所有文件和目录复制到proc2目录,源文件的更改时间比目标文件晚或目标文件不存在时,才进行复制操作;并且其中的链接文件会保持不变,操作之后proc1和proc2目录的结构是一致的
cp --parents setup/readme.txt code/  #将setup/readme.txt文件复制到code目录下,并保留目录结构。此例复制后的路径为:code/setup/readme.txt

4.6 diff(比较文件的差异)

diff file1.txt file2.txt  #比较文件file1.txt与file2.txt的差异
diff -r dir1 dir2  #比较目录dir1与dir2的差异
diff -r --brief dir1 dir2  #比较目录dir1与dir2的差异,但只返回哪些文件存在差异
diff -Naur dir1 dir2 > diff.patch #比较目录dir1与dir2的差异,并保存为patch。N表示如果某个文件仅在一个目录中出现,则假定其在另一个目录中为空文件;a表示将所有文件当做文本文件看待,适合于二进制文件的比较;u表示以合并的方式显示文件内容的不同;r表示比较子目录中的文件。

4.7 find(查找文件或目录)

find -name 'A.txt'  #在当前目录下查找文件A.txt
find -iname 'A.txt'  #以不区分大小写的形式在当前目录下查找文件A.txt,例如:A.txt,A.TXT,a.txt,a.Txt,a.TXT等都可以匹配
find -lname 'sh.ln'  #在当前目录下查找软链接文件sh.ln
find -type d  #在当前目录下查找所有的目录
find -type l  #在当前目录下查找所有的链接文件
find ~/ -name "A*"  #在用户默认目录下查找所有以A开头的文件和目录
find -perm 755 -ls  #在当前目录下查找所有权限为755的文件并列出详细信息
find -empty  #在当前目录下查找大小为0的文件或空目录
find -type f -name "*.bak" -exec rm -rf {} \;  #在当前目录下查找所有后缀为.bak的文件,并删除
find -type f -name "*.bak" | xargs rm -rf  #同上,用“|”管道操作的速度要快于上述方法
find ! -name '*.java' -type f  #在当前目录下查找所有后缀不为.java的文件
find -path './res' -prune -o -name "*.java" -print  #在当前目录下,排除res目录,查找所有后缀为.java的文件
find \( -path './res' -o -path './ant' \) -prune -o -name "*.java" -print  #在当前目录下,排除res和ant目录,查找所有后缀为.java的文件

4.8 ln(创建文件或目录链接)

ln -s abc.txt abc.ln  #为abc.txt建立软链接文件abc.ln
ln -sf abc.txt abc.ln  #为abc.txt强制建立软链接文件abc.ln,如果abc.ln已存在,则覆盖之
ln abc.txt abc.ln  #为abc.txt建立硬链接文件abc.ln

注:
链接文件分为:
软链接:也称符号链接,即为文件或目录创建一个快捷方式。当源文件删除或移动后,此链接失效。
硬链接:此链接文件与源文件指向同一个i节点,所以当源文件内容变化后,硬链接的文件也将同步更新。可理解为:给一个文件取多个名字,放在不同的目录中,方便用户使用。当源文件删除或移动后,此链接成为普通文件,依然有效。

4.9 mv(移动或重命名现有的文件或目录)

mv abc.txt def.txt  #将文件abc.txt重命名为def.txt
mv abc.txt proc/  #将文件abc.txt移动到proc目录下
mv abc.txt proc/def.txt  #将文件abc.txt移动到proc目录下,并重命名为def.txt
mv old/* proc  #将目录old下的所有文件移动到proc目录下,命令运行后,old目录依然存在,只是其下的所有文件都已转移到proc目录

4.10 rm(删除文件或目录)

rm abc.txt  #删除文件abc.txt
rm -f abc.txt  #强制删除文件abc.txt,并在删除前不询问用户
rm -rf proc  #强制删除目录proc及所包含的所有内容,并在删除前不询问用户

4.11 touch(改变文件或目录时间,创建空文件)

touch abc.txt  #在当前目录下创建一个空文件abc.txt
touch sys/abc.txt  #在sys目录下创建一个空文件abc.txt
touch {aa.txt,bb.txt,cc.txt}  #一次性创建多个空文件
touch a.txt b.txt c.txt  #一次性创建多个空文件
touch -d "3/21/2011" Shell.txt  #将Shell.txt文件的时间记录改为2011年3月21日00:00
touch -d "13:56 3/21/2011" Shell.txt  #将Shell.txt文件的时间记录改为2011年3月21日13:56
touch -r a.txt b.txt  #将b.txt的时间记录改为与a.txt相同

附:(时间记录的格式,以下的"/"均可以用"-"代替)
"16:07 05/22/2005"
"04:07pm 05/22/2005"
"04:07pm05/22/2005"
"16:07 2005/05/22"
"04:07pm 2005/05/22"
"04:07pm2005/05/22"

4.12 vi(编辑文本文件)

vi a.txt  #用vi编辑器编辑或新建文件a.txt
vi a.txt b.txt  #依次编辑文件a.txt和b.txt

4.13 more(分页显示文件内容)

more a.txt  #分页显示文件a.txt的内容,按空格键显示下一页,按退格键显示前一页,按回车键显示下一行

4.14 less(分页显示文件内容)

less a.txt  #分页显示文件a.txt的内容,按j键向下移动一行,按k键向上移动一行

4.15 head(显示文件的前n行内容)

head a.txt  #显示文件a.txt的前10行(默认)内容
head -5 a.txt  #显示文件a.txt的前5行内容
head -5v a.txt  #先显示文件名a.txt,再显示文件的前5行内容
head -5c a.txt  #显示文件a.txt的前5个字节

4.16 tail(显示文件的后n行内容)

tail a.txt  #显示文件a.txt的后10行(默认)内容
tail -5 a.txt  #显示文件a.txt的后5行内容
tail -v a.txt  #先显示文件名a.txt,再显示文件的后10行内容
tail -5c a.txt  #显示文件a.txt的后5个字节

4.17 grep(查找文件里符合条件的字符串)

grep "select" *  #在当前目录下查找包含字符串select的文件名称及所在的行
grep -l "select" *  #只显示包含字符串select的文件名
grep -n "select" *  #在当前目录下查找包含字符串select的文件名称及所在的行,并显示行号
grep -n "select" * -r  #在当前目录及子目录下查找包含字符串select的文件名称及所在的行,并显示行号
grep -n "select" * -ri  #同上,但是不区分大小写
grep -n "select" * -rI  #在当前目录及子目录下查找包含字符串select的文件名称及所在的行,并显示行号,而且排除二进制文件
grep "select" package * -r  #在当前目录下的package目录及其子目录下查找字符串select
grep "select" --include=*.txt * -r  #只搜索以.txt为后缀的文件
grep "select" --exclude=*.bak * -r  #在搜索路径中排除以.bak为后缀的文件
grep "select" --exclude-dir=out * -r  #在搜索路径中排除名为out的目录及其子目录

4.18 sort(将文本文件内容排序)

sort a.txt  #将a.txt文件内容以行为单位进行排序,并在终端输出
sort a.txt > sort.txt  #将a.txt文件内容以行为单位进行排序,并将结果写入sort.txt文件
sort -r a.txt  #将a.txt文件内容以行为单位进行逆序排序,并在终端输出

注:sort命令并不会修改源文件的内容,只会将排序后的内容输出。
4.19 scp(本地与远程服务器之间复制文件或目录)

scp -P 222 [email protected]:/home/chen/test.log .  #以chen用户的身份登录到服务器100.130.99.111,服务器的SSH端口号为222,并将其上的/home/chen/test.log文件复制到本地当前目录
scp -P 222 history.txt [email protected]:/home/chen/  #将本机当前目录下的history.txt文件复制到100.130.99.111服务器的/home/chen/目录下
scp -P 222 -r [email protected]:/home/chen/pro setup/  #以chen用户的身份登录到服务器100.130.99.111,服务器的SSH端口号为222,并将其上的/home/chen/pro目录以及子目录的所有文件复制到本地的setup目录

注:使用scp命令的前提是本地和远程服务器都开启SSH服务。
4.20 stat(显示文件、目录的inode内容)

stat ab.txt  #显示文件ab.txt的inode内容

4.21 cut(显示每行中指定列的内容)

cut -c 5 ab.txt #显示ab.txt中每行的第5列的内容
cut -c -5 ab.txt #显示ab.txt中每行的第1~5列的内容
cut -c 5- ab.txt #显示ab.txt中每行的第5列到最后一列的内容
cut -c 2-5 ab.txt #显示ab.txt中每行的第2~5列的内容

4.22 wc(文本统计)

wc ab.txt #依次显示ab.txt文件的行数、单词数与字符数
wc -l ab.txt #显示ab.txt文件的行数
wc -w ab.txt #显示ab.txt文件的单词数
wc -m ab.txt #显示ab.txt文件的字符数
wc -c ab.txt #显示ab.txt文件的字节数
wc -L ab.txt #显示ab.txt文件中最长行的字符数

4.23 du(显示目录或文件的大小)

du -a  #显示当前目录中每个文件的大小
du -h  #以K,M,G为单位,提高信息的可读性
du -s  #仅显示当前目录的总计大小
du -S  #显示个别目录的大小时,并不含其子目录的大小
du -sh test  #以K,M,G为单位,并仅显示test文件或目录的总计大小

4.24 split(切割文件)

split proc.tar.gz -b 2m #将proc.tar.gz文件分割为多个小文件,并保持每个小文件的大小不超过2m字节。命令运行后,源文件依然存在。生成的小文件以默认格式命名,为:xaa、xab等
split proc.tar.gz -b 2m -d #基本同上,只是生成的小文件以数字格式命名,为:x00、x01等
split proc.tar.gz -b 2m -d proc.tar.gz #基本同上,只是生成的小文件名前缀是自定义的,为:proc.tar.gz00、proc.tar.gz01等
split a.txt -C 300k -d a.txt #将a.txt文本文件分割为多个小文件,并保持每个小文件的大小不超过300k字节,而且尽量保持每行的完整性

4.25 locate(在系统数据库中查找文件或目录)

locate a.txt #在系统数据库中查找名为a.txt的文件
locate -e a.txt #在系统数据库中查找名为a.txt并且存在的文件
locate -c a.txt #在系统数据库中查找名为a.txt并且只返回查找到的文件数目


 

猜你喜欢

转载自blog.csdn.net/chenzhengfeng/article/details/81780637