linux文件操作

# linux文件系列

创建特定大小的文件

  • 单元大小 字节(1B) C \字(2B) w \块(512B)b\ 千字节(1024B)k\ 兆字节(1024KB)M\ 吉字节(1025MB)G\
$ dd if=/dev/zero of=junk.data bs=1M count=1 (也可以测试内存操作速度)

文本交集与差集

sort A.txt -o A.txt; sort B.txt -o B.txt 对文件进行排序
comm A.txt B.txt 
comm A.txt B.txt -3 | sed 's/^\t//'	

创建长路径目录

$ mkdir dirpath
$ mkdir -p dirpath 创建多级目录

文件权限、所有权、粘滞位

$ ls - l #列出文件权限
第一列表示文件类型
“-” 普通文件  
"d" 目录
"c" 字符设备
"b" 块设备
"l" 符号链接
"s" 套接字
"p" 管道

-rws---
r 代表可读 =4
w 代表可写 =2
x 代表可执行 =1

设置权限
$ chmod u=rws g=rw o=rw filename
u =指定用户权限
g = 指定用户组权限
o =指定其他实体权限

chmod 0+x filename 给其他实体权限增加可执行
chmod a+x filename 全部用户添加执行权限

chmod 765 filename

#更改所有权
chown user.group filename
#设置粘滞位
chmod a+t directory_name 只有目录所有者才可以删除目录中的文件
#递归方式设置权限
chmod 777 . -R


创建不可修改文件

chattr 可以设置文件为不可修改
chattr +i file 
$ sudo chattr +i file

重新可写
chattr -i file

生成批量空白文件

touch filename

for name in (1..100).txt
do
touch $name 
done

touch -a 只更改文件访问时间
touch -m 只更改文件内容修改时间

touch -d "Fri Jun 25 20:50:14 IST 1999" filename  为时间戳指定时间和日期 

查找符号链接

$ ln -s target symbolic_link_name 
$ ln -l -s /var/www/  ~/web

$ ls web 
1rwxrwxrwx 1 slynux slynux	8 2010-06-25 21:34 web -> /var/www/
打印出符号链接
ls -l | grep "^1" | awk '{print $8}'
或者
$ find . -type 1 -print
$ ls -l web | awk '{print $10}

3.10 列举文件类型统计信息

打印文件类型信息
file filename
打印不包含文件名的文件类型信息
file -b filename 

文件统计信息脚本

#!/bin/bash
if[$# -ne 1];
then 
echo $0 basepath;
echo
fi
path=$1

declare -A statarray;

while read line;
do 
ftype=`file -b "$line`
let statarray["$ftype"] ++;
done <<(find $path -type f -print)
for type in "${!statarray["$ftype"]}";
do 
echo $ftype:${statarray["$ftype"]}
done

3.11 环回文件与挂载

创建一个1G的文件
$ dd if=/dev/zero of=loopbackfile.img bs=1G count=1
#用mkfs格式化这个1Gb文件
mkfs.ext4 loopbackfile.img
#文件检查
$sodu file loopbackfile.img

挂载环回文件

$ sodu mkdir /mnt/loopback

# mount -o loop loopbackfile.img /mnt/loopback

#链接设备

# losetup /dev/loop1 loopback.img

#mount /dev/loop1 /mnt/loopback

分区挂载硬盘文件(对一个用0填充的文件进行分区)
#losetup /dev/loop1 loopback.img

# fdisk /dev/loop1

在loopback.img中创建分区并挂载第一个分区

# losetup -o 32256 /dev/loop2 loopback.img

可以指定偏移量来设置第二个分区,挂载分区后就可以执行操作
卸载
#umount mount_point
umount /mnt/sda1(设备文件路径)

ISO文件作为环回文件挂载
mkdir /mnt/iso
mount -o loop linux.iso /mnt/iso





混合镜像

创建镜像
# cat /dev/cdrom >image.iso

或者# dd if=/dev/cdrom of=image.iso
mkisofs 创建ISO文件系统
$mkisofs -V "Label" -o image.iso source_dir/

标准ISO转化混合ISO

# isohybrid image.iso

将ISO写入USB 
#dd if=image.iso of=/dev/sdb1
或者使用cat

# cat image.iso > /dev/sdb1

用命令行刻录ISO
cdrecord ISO> CD ROM/CD

# cdrecord -v dev=/dev/cdrom image.iso -speed 8 (8x速度刻录)-multi(多区段刻录)

弹出光盘
$ eject 
$ eject -t 合上光盘

查找文件差异与修补

diff version1.txt version2.txt
一体化(可读性更好,+是新加入的行,-是删除的行 ,修补文件可以重定向)

# diff -u version1.txt version2.txt

# diff -u version1.txt version2.txt > version.patch 重定向另一个文件

之后就可以用paych修改文件

# patch p1 version1.txt < version.patch

diff 生成目录差异
$ diff -Naur dir1 dir2 
-N 将所有缺失的文件视为空文件
-a  将所有文件是为文本文件
-u 生成一体化输出
-r 	遍历目录下的所有文件

head与tail

打印前十行

# head file     /tail file

从stdin读取数据
$ cat text | head  /cat text | tail
指定打印前几行
$ head -n 4 file  /tail -n 4 file
打印除了最后N行之外所有的行
$head -n -N file /tail -n +(N+1) file

随着文件数据的更新保持更新
tail -f growing_file
或者$ dmesg | tail -f (-s 是睡眠间隔)

根据进程监视
$ PID=$(pidof Foo)
$ tail -f file --pid $PID

列出目录

四种方法列出当前路径下的目录
$ ls -d */
$ ls -F | grep "/$"
$ ls -l | grep "^d"
$ find . -type d -maxdepth 1 -print 

pushd和popd的快速定位

压入并切换路径
~ $ pushed /var/www
/var/www $ pushed /usr/src
查看栈内容
$ dirs
/usr/src /var/www ~ /usr/share /etc	
0        1        2  3          4  
切换路径
$ pushed +3
移除路径
$ popd 
$popd +no 移除特定的路径

统计文件行数、单词数、字符数

统计行数
$ wc -l file /cat file | wc -l
统计单词数
$ wc -w file 
$ cat file | wc -w
统计字符数
$ wc -c file 
$ cat file | wc -c
打印文件的行数、单词数、字符数、制表符
$ wc file
最长行的长度
$ wc file -L

打印目录树

$ tree ~/unixfs
$tree PATH -P "*.SH" 匹配某种样式的文件
$tree path -I PATTERN 匹配某种样式以外的文件
同时打印出文件和目录的大小
$tree -h 
$tree PATH -H http://localhost -o out.html 创建包含目录树的HTML文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值