Linux 文件/文件夹操作

这篇博客详细介绍了Linux系统中对文件和文件夹的操作,包括使用tar命令处理.tar.bz2和.tar.xz压缩文件,查看文件夹大小的多种方法,使用md5sum进行文件校验,以及多种清空文件内容的命令。此外,还提到了清空命令历史、创建文件链接、追加文本和查看文件内容的常用命令。
摘要由CSDN通过智能技术生成

1. Linux 文件(夹)操作

1.1. 加解压文件

1.1.1. tar.bz2

# 需要安装 bzip2 否则会报 not execute 的错误
$ sudo yum -y install bzip2
$ tar -jxvf archive.tar.bz2

相比以上几种格式, tar.gz2 拥有最高的压缩率, 但是压缩的时候所需要的时间也最长, CPU 占用率也最高。将文件或文件夹压缩为 tar.bz2 的命令如下:

tar -jcvf archive_name.tar.bz2 file_to_compress
tar -jcvf archive_name.tar.bz2 directory_to_compress

1.1.2. tar.xz

# 解压
$ tar -xf archive.tar.xz
$ tar -xvJf archive.tar.xz

$ xz -d 要解压的文件
$ xz -z 要压缩的文件

1.2. 查看各文件夹大小

ls -lh
  1. 最简单的查看方法可以使用 ls -llls-lh 命令进行查看, 当使用 ls -ll, 会显示成字节大小, 而 ls- lh 会以 KB、MB 等为单位进行显示, 这样比较直观一些。
  2. 通过命令 du -h --max-depth=1, 可以查看当前目录下各文件、文件夹的大小, 这个比较实用。=du -h -d 1
  3. 查询当前目录总大小可以使用 du -sh, 其中 s 代表统计汇总的意思, 即只输出一个总和大小。
  4. 同样, 通过命令 du -h --max-depth=1, 可以只显示直接子目录文件及文件夹大小统计值。 =du -h -d 1
  5. 如果只想查看指定目录的总大小, 可以使用 du -sh 目录名称。
  6. 对于指定文件夹也可以指定显示层次深度, 如:
du -h --max-depth=0 software/ 
# 及
du -h --max-depth=1 software/

du --max-depth=1 | sort -rh # 按照文件大小排序

备注: --max-depth 选项在 MacOS 中不能用, 改用 du -hd1

1.3. md5 文件校验

  • Linux 下查看文件 MD5 值的命令为: md5sum 目标文件
  • Linux 系统比对两个文件内容是否完全相同: md5sum file1 file2
  • Linux 系统比对两个文件内容不同的地方: diff file1 file2

1.4. 清空文件

注意: 由于再 Linux 中一切皆文件, 你需要时刻注意, 确保你将要清空的文件不是重要的用户文件或者系统文件。清空重要的系统文件或者配置文件可能会引发严重的应用失败或者系统错误。

提示: 在下面的示例中, 我们将使用名为 access.log 的文件来作为示例样本。

1.4.1. 通过重定向到 Null 来清空文件内容

清空或者让一个文件成为空白的最简单方式, 是像下面那样, 通过 shell 重定向 null (不存在的事物) 到该文件:

# > access.log

1.4.2. 使用 ‘true’ 命令重定向来清空文件

下面我们将使用 : 符号, 它是 shell 的一个内置命令, 等同于 true 命令, 它可被用来作为一个 no-op(即不进行任何操作)。另一种清空文件的方法是将 : 或者 true 内置命令的输出重定向到文件中, 具体如下:

# : > access.log

# true > access.log

1.4.3. 使用 cat/cp/dd 实用工具及 /dev/null 设备来清空文件

在 Linux 中, null 设备基本上被用来丢弃某个进程不再需要的输出流, 或者作为某个输入流的空白文件, 这些通常可以利用重定向机制来达到, 所以 /dev/null 设备文件是一个特殊的文件, 它将清空送到它这里来的所有输入, 而它的输出则可被视为一个空文件。另外, 你可以通过使用 cat 命令 显示 /dev/null 的内容然后重定向输出到某个文件, 以此来达到清空该文件的目的。

# cat /dev/null > access.log

下面, 我们将使用 cp 命令 复制 /dev/null 的内容到某个文件来达到清空该文件的目的, 具体如下所示:

# cp /dev/null access.log

而下面的命令中, if 代表输入文件, of 代表输出文件。

# dd if=/dev/null of=access.log

1.4.4. 使用 echo 命令清空文件

在这里, 你可以使用 echo 命令 将空字符串的内容重定向到文件中, 具体如下:

# echo "" > access.log

或者

# echo > access.log

注意: 你应该记住空字符串并不等同于 null。字符串表明它是一个具体的事物, 只不过它的内容可能是空的, 但 null 则意味着某个事物并不存在。基于这个原因, 当你将 echo 命令 的输出作为输入重定向到文件后, 使用 cat 命令来查看该文件的内容时, 你将看到一个空白行 (即一个空字符串)。
要将 null 做为输出输入到文件中, 你应该使用 -n 选项, 这个选项将告诉 echo 不再像上面的那个命令那样输出结尾的那个新行。

# echo -n "" > access.log

1.4.5. 使用 truncate 命令来清空文件内容

truncate 可被用来将一个文件缩小或者扩展到某个给定的大小。你可以利用它和 -s 参数来特别指定文件的大小。要清空文件的内容, 则在下面的命令中将文件的大小设定为 0:

# truncate -s 0 access.log

1.5. 清空命令历史

rm $HOME/.bash_history

1. 第一种方式
history -c
 
2. 第二种方式
emacs ~/.bash_profile 添加: 
export HISTSIZE=0
这样 ~/.bash_history 和当前会话的历史记录都会被清除。
 
3. 第三种方式
rm ~/.bash_history

1.6. 链接文件 / 文件夹

ln 的功能是为某一个文件在另外一个位置建立一个同步的链接。

ln -s [源文件/已经存在的] [目标文件/要创建的]

-s 是 symbolic 的意思。

ln 的链接有软链接和硬链接两种:

  • 软链接就是 ln -s ** **, 只会在选定的位置上生成一个文件的镜像, 不会占用磁盘空间。
  • 硬链接 ln ** **, 没有参数 -s, 在选定的位置上生成一个和源文件大小相同的文件。

无论是软链接还是硬链接, 文件都保持同步变化。软链接是可以跨分区的, 但是硬链接只能在同一分区内。

目录不能建立硬链接, 但可以建立软链接。

1.7. 追加文本

  • 追加文本: echo hi >> a.txt
  • 覆盖文本: echo hi > a.txt

>> 代表的是追加, > 代表的是覆盖。

1.8. 查看文件内容的命令

  • cat: 查看文件里面的内容。
  • less: 需要使用 q 退出; 在文本信息过多的情况下, 可以做翻页查看, 使用 上下键 来翻页; 查找, 查找该文本里面是否包含自己需要的内容 输入 /关键字 可以实现查找。
  • more: 可以实现翻页, 使用空格键做翻页。
  • head/tail: 查看文件尾部的行数。head -n 2 1.log / tail -n 2 1.log
  • file: 查看文件的类型。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云满笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值