本网站相关文章:
Introduction
本文章主要用于了解,汇总平常涉及到对文件的基本命令操作, 对于文件中的数据处理和操作见其他文章.
文件列表
ls
使用 ls 命令, 可以查看文件的创建时间, 文件的大小等信息
1 2 3 4 5 6 7 8 9 10 11 12 13
| ls -ld
ls -l ll
ls -lh ll -h
ls -la
|
tree
使用 tree 来打印当前文件或者目录中各个子文件的层次结构
1 2 3 4
| tree -C tree -h tree -L LEVEL tree -N
|
例如:
1 2 3 4 5
| tree -NC -L 1
tree -NC -L 2
|
增删改
create
创建文件, 创建目录, 创建临时文件等等.
1 2 3 4 5 6 7 8 9 10
|
touch -t 199001011200 file
touch *
mkdir -p /user/dir2/subdir3/
创建临时文件
|
拷贝文件, 其中命令 cp 会对已经存在相同目录进行合并操作
update
- link-创建软连接, 硬链接文件, 格式:
ln 【参数】 【源文件或者目录】 【目标文件或者目录】
- 硬链接:相同 inode 号但是文件名不同的链接,不占用磁盘空间,只有文件的链接引用计数为 0,文件才真正被删除
- 软连接:拥有自己 inode 节点和用户数据块的普通文件,只不过特殊而已.
1 2 3 4 5 6 7 8 9 10 11 12 13
|
ln -s src1 dst1
ln tsrc1 tdst2
echo "new line1" >> tsrc1
rm tsrc1
|
- move-移动目录, 其中
- rename-批量更改文件的名称
1 2 3
| 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/
|
delete
对文件实体的删除操作
- rm: remove directory or file entries
- unlink: unlink directory or file one time
- rmdir: rmove directories
查找
filename
- walk a file hierarchy(层级/层次结构), 见find
- find filename quickly, locate
- whereis 在 PATH 目录下搜索 app,source,manual-page 等类型的文件
1 2 3 4 5 6
| whereis -b bin
whereis file1
whereis -m grep
|
注意, macos 系统下 whereis 仅仅查找标准可执行文件路径
的文件, linux 系统则完全不一样.
- which: 在 PATH 指定的路径中, 搜索某个系统命令的位置, 并仅仅返回第一个搜索结果:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
which grep
which -a find
echo "test1" > ~/.local/bin/mygo2 which -a mygo2
chmod +x ~/.local/bin/mygo2 which -a mygo2
|
这里简单的描述下which, where, locate, find
四者的区别:
- which 只能查找可执行文件, 其通过搜索 PATH 来找到所需值
- whereis 可以找到 PATH 目录下的大部分文件(Macos 仅仅查找标准可执行文件路径下的文件)
- locate 搜索全部磁盘并提前建立数据进行映射, 查找时瞬间给你返回
- find 实时搜索目录, 功能比较丰富但是速度比较慢
- type: 区分指定的”命令”是否是 shell 自带的
content
对于文件内容的操作, 主要命令有: grep, cat, sed, 具体见各个文章.
- grep: Global Search Regular Expression and Print out the line.
- cat: Display all content
- sed: 流式文本编辑器
- tee: 从标准输入读入并写往标准输出和文件
- cat 命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
cat -b src > dst.log
cat aggregate.py | tee a.py b.py c.py >/dev/null
|
- tee
另外, 还有more/less/tail/head
, 它们会输出文件部分内容, 一般用于大文件的输出
stat 和 file
- stat: Display file or file system status, 例如文件名,大小,类型,硬链接计数,权限,访问时间等
1 2 3 4
| stat -x file
stat file
|
其输出如下:
1 2 3 4 5 6 7
| File: "record.md" Size: 65 FileType: Regular File Mode(权限信息): (0644/-rw-r--r--) Uid: ( 501/bamboounuse) Gid: ( 20/ staff) Device(设备信息): 1,17 Inode: 77572539 Links: 1 Access(最近访问): Fri Dec 2 10:07:49 2022 Modify(最近修改): Fri Dec 2 10:07:48 2022 Change(最近改动): Fri Dec 2 10:07:48 2022
|
- file: Determine type of FILES(查看文件类型), 用的不多
实战
- diff, 比较两个目录的大小:
diff -ruNa s1 s2 > s12.diff
, 此时 s12.diff 中的输出类似下面:
1 2
| Only in network: network-1.md Only in protocol: protocol-2.md
|
- 文件大小清 0
1 2 3 4 5
| echo "">filename cat /dev/null >filename
echo "" | sudo tee filename
|
参考