1 Introduction

本文章主要用于了解,汇总平常涉及到对文件的基本命令操作, 对于文件中的数据处理
和操作见其他文章.

2 List

2.1 ls

使用ls命令, 可以查看文件的创建时间, 文件的大小等信息

1
2
3
4
5
6
7
8
9
10
11
# 显示目录本身属性
ls -ld

# 查看文件大小
# 以byte方式显示文件大小
ls -l或者ll
# 以human readable方式显示文件大小
ls -lh 或者 ll -h

# 显示隐藏
ls -la

2.2 tree

使用tree来打印当前文件或者目录中各个子文件的层次结构

1
2
3
4
tree -C         # 高亮显示
tree -h # human形式
tree -L LEVEL # 层级, 在多文件的情况下, 用于更快, 更好的进行显示
tree -N # Unicorn显示

3 CURD

3.1 Create

创建文件, 创建目录, 创建临时文件等等.

1
2
3
4
5
6
7
8
9
10
# touch
# 指定时间
touch -t 199001011200 file
# 修正所有文件创建时间
touch *
# mkdir
# 递归
mkdir -p /user/dir2/subdir3/
# mktemp
创建临时文件

拷贝文件, 其中命令cp会对已经存在相同目录进行合并操作

3.2 Update

link-创建软连接,硬链接文件, 格式: ln 【参数】 【源文件或者目录】 【目标文件或者目录】

  • 硬链接:相同inode号但是文件名不同的链接,不占用磁盘空间,只有文件的链接引用计数为0,文件才真正被删除
  • 软连接:拥有自己inode节点和用户数据块的普通文件,只不过特殊而已.

命令:

1
2
3
4
# 创建软连接:
ln -s src1 dst1
# 创建硬链接
ln -l src2 dst2

move-移动目录, 其中

  • 普通文件:已存在则替换
  • 目录:已存在,则非法操作
1
2
# 使用{}来备份文件:
mv .vim{, .bak}

rename-批量更改文件的名称

1
2
3
# 批量删除.bak文件
ls *.bak | sed 's/.bak$//' | xargs -n 1 -i mv {}.bak {}
rename 's/.bak//' *.bak

copy拷贝目录

1
2
3
# 拷贝一个目录下的所有子目录, 子文件到另外一个目录, 并覆盖原文件, 原子目录
# 另外还包括隐藏目录
cp -TR crawler/. /home/visa/repository/crawler/

3.3 delete

对文件实体的删除操作

  • rm: remove directory or file entries
  • unlink: unlink directory or file one time
  • rmdir: rmove directories

4 Find

4.1 filename

find: walk a file hierarchy(层级/层次结构), 见

locate: find filename quickly,

whereis: 仅仅用于app,source,manual-page的搜索

1
2
3
4
# 二进制
whereis -b bin
# 帮助文档
whereis -m grep

which: 在PATH制定的路径中,搜索某个系统命令的位置,并仅仅返回第一个搜索结果:

1
2
which grep
which find

type: 区分制定的”命令”是否是shell自带的

1
2
3
# 输出:  cd is a shell builtin
type cd
# 输出: grep is /usr/bin/grep,这是一个外部命令

4.2 Content

对于文件内容的操作, 主要命令有: grep, cat, sed, 具体见各个文章.

  • grep: Global Search Regular Expression and Print out the line.
  • cat: Display all content

其中cat命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# a:将指定文件中的内容加上行号,重定向到目标文件中
# 如果没有指定目标文件,默认标准输出为目标文件
cat -b src > dst.log

# b:here document
# 一段特殊目的的代码块,使用IO重定向的形式来将一个"command list"传递到"交互程序或者命令”
# interactive-program << LimitString
# command #1
# command #2
# ...
# LimitString

# c: tee命令
# 如果重定向到多个文件中,可以使用tee命令(默认输出到stdout中)
cat aggregate.py | tee a.py b.py c.py >/dev/null

more/less/tail/head: 输出部分文件,用于大文件的输出

4.3 Stat

stat: Display file or file system status

1
2
3
# 例如:文件名,大小,类型,硬链接计数,权限,访问时间等
# MAC:
stat -x file

file: Determine type of FILES(查看文件类型)

5 others

diff-比较两个目录的大小: diff -ruNa s1 s2 > s12.diff

文件大小清0

1
2
3
4
5
# Write Permissions
echo "">filename
cat /dev/null >filename
# UnWrite Permissions
echo "" | sudo tee filename