当前位置 博文首页 > 直心I:文件操作命令操作详解(Linux)
文件操作
创建(touch)
touch 文件名
文件内容覆盖追加(echo)
#覆盖>
echo 'hello zyc53' >a.txt #将hello zyc53输出到a.txt文件中,会覆盖a.txt文件原来的内容,没有a.txt文件,则会创建
#追加>>
echo '吃饭了吗' >> b.txt #将显示内容追加到文件末尾,?件不存在则创建
移动及文件后缀修改(mv/remame)
mv 源文件A 目标文件B #类似剪切,销毁原件
mv c.txt ./D/ #将c.txt移动到子目录D下,?件名不变--------文件移目录里
mv ../c.txt ./c1.txt #移动到当前?录下,改名为c1.txt------换名
mv e.txt f.txt #如果在同?个目录就是文件重命名 将e.txt重命名f.txt
rename 's/tx/txt/' 2.tx #将2.tx替换为2.txt
拷贝文件(cp)
cp 源?文件 ?标?文件
sudo cp -r 源目录 目标目录 #递归拷贝目录 -------sudo cp -r 4/8 5/7/
删除文件(rm)
sudo rm ?件名
sudo rm -i 文件名 #删除前逐?一确认
sudo rm -f 文件名 #删除?文件不不带提示
sudo rm -rf 目录名 #递归删除目录,不管目录是否为空***慎用
查看文件内容
(cat-内容输出/ head内容前几行 /tail内容最后几行/ watch实时显内容/ more从前往后看/less和more类似/stat文件详细信息)
cat:
cat ?件名 #输出?件内容,从前往后输出,
cat ?件1 文件2 >> ?件3 # 将两个?件合并指定文件
tac:
tac 文件名
#cat的反写,从后往前输出
head:
head -n N 文件名 #显示文件的前几行,指定查看N行
tail:
tail -n N 文件名 #文件最后N行
tail -f cat 文件名 #实时显示文件内容
watch:
watch -d -n 秒数 cat ?件名 #实时显示文件内容
vim:
vim A.txt. #编辑A.txt文件内容
more:
more ?件名 #从前往后查看,可以翻屏 ,不能往前翻 回车一行行查看,空格翻屏(f翻屏) q退出
less:
less 文件名 #和more类似,可以前翻页,g?页 G尾页,b前翻页,空格和f后翻页,q退出
stat:
stat 文件名 #查看文件详细信息
#?件的三个时间:
atime: accesstime #访问时间
mtime:modifytime #修改时间
ctime: changetime #修改状态时间(修改文件元数据)
文件名及内容(find/grep)
find [路径] [参数] [?件名]
-name 按?件名查找
-iname 按?件名查找,不区分?小写
-mtime +/-n #-n表示n天以内修改的文件,+n表示修改超过n天的文件
-user #按?件属主查找
-size [+/-]n[c/k/M/G] #查找?文件长度为n块,+表示大于,-表示小于; c是字节
-perm 权限数值 #按照文件权限进行查找
-maxdepth N #目录深度
-ls #以列表形式显示
-type [f/d/l] #按类型查看
-exec 执?行shell命令,形式: -exec command {} \
find / -name "?件名" #从根目录查找指定文件名的?件,如果不指定目录,则从当前目录查找
find . -name "?件名" #从当前目录查找指定文件名的文件
find -name "?件名" #从当前目录查找指定文件名的文件
find /csl/sh1702 -name "2.txt" #查找指定目录的文件
find /tools -mtime -3 #查找tools目录下修改时间是3天以内的文件
find /tools -mtime +3 #查找tools目录下修改时间是3天以上的文件
find -mtime -3 -maxdepth 1 -ls
find /tools -size 12c #查找长度为12字节的文件
find /var -size +10k -size -100k -name '*.log' #在/var目录下,查找10-100k
find -size +10k -maxdepth 1 -ls
#按?件的所属?户查找
find -maxdepth 1 -user root
#删除当前目录及其子目录下的所有后缀为txt的文件,注意{}和\中间有空格,最后有?个;
find . -name '*.txt' -exec rm {} \;
#只查找当前目录下,权限是700的?文件,并以列表形式显示
find -perm 700 -maxdepth 1 -ls
sudo find -maxdepth 2 -name '1.txt' -ls
#grep 是global search regular expression(RE) and print out the line的缩写。即全面搜索正则表达式并把行打印出来。
grep [options] 'pattern' filename
-i 不不区分?小写
-c 只显示匹配行的数量量
-r 递归查找子目录
-l 列出?件内容符合指定的范本样式的文件名称。
-n 显示行号
-w 只匹配单词,不是匹配单词一部分
-E 按正则表达式搜索
--color 以不同颜?显示匹配的关键字
--include '*.py' #仅搜索py?文件 --exclude '*.py' #不不搜索py?文件
# 在1.txt搜索this,要按照完整单词的模式进行匹配,并且显示匹配行
grep -n -w 'this' 1.txt
#在当前目录下所有文件中搜索this,并不同颜?显示关键字
sudo grep 'this' * --color
显示匹配行数
sudo grep -c 'this' 1.txt
搜索指定的1.txt,递归查找子目录
grep -r -w -l 'this' --include '1.txt'
# 显示当前目录下所有的文件,不显示目录
ls -la | grep -E '^-'
| 管道符,他可以将前一个命令的输出作为后?个命令的输入
命令查找(which/whereis)
which 命令名 #查找命令
whereis ?件名 #只能搜索命令、源文件、?进制文件
文件内容统计(wc)
wc [options] [?件列表]
-l 统计有多少行
-w 统计有多少单词
$ wc -l /etc/passwd #统计passwd有多少?户
文件逐行读入(awk)
awk '{pattern + action}' {filenames}
cat /etc/passwd |awk -F ':' '{print $1}' # $1显示第?一列列 -F 指 定分割符为':'
# 列数从左向右: 1,2,3...
报告或删除文件中重复的行,只比较相邻行(uniq)
用法: uniq [选项]... [文件]
-c //在每行前加上表示相应行?出现次数的前缀编号
-d //只输出重复的?
-D //只输出重复的?,有?行输出?行
-i //忽略略?大?小写
升序排序(sort)
sort将?件/文本的每?行作为?个单位,相互?较,?较原则是从?字符向后,依次按ASCII码值进??较,最后将他们按升序输出。
sort(选项)(参数)
-u忽略略相同?行行
-k 按指定列列排序 -n 按数值排序 -t 分割符
-r 逆序
#指定passwd?文件按第三列列 的数值?比较,列列之间的分隔符为:
cat /etc/passwd | sort -n -t ':' -k 3
#查找你最常用的10条命令
history | awk '{print $2}' | sort | uniq -c | sort -r -n -k 1 |
head -n 10
cs