查看文件信息/是否存在
stat xxFile
在 Golang 下查看文件正是 os.stat
复制文件
-f
强制复制文件,如果有重名文件则覆盖。
为什么 cp -f
命令不生效?
参考链接:https://stackoverflow.com/questions/8488253/how-to-force-cp-to-overwrite-without-confirmation
`cp``cp -i```` /bin/cp -rf /zzz/zzz/* /xxx/xxx
- 复制目录,最推荐的做法是, `cp -rf xxx/* /xx/xx` , 否则有可能不生效。
<a name="lc1x2"></a>
# 文件大小
<a name="YD6ht"></a>
## 文件大小
```bash
ls -l -h
drwxr-xr-x 2 root root 4.0K 5月 28 15:00 .
drwxr-xr-x 4 root root 4.0K 4月 11 2019 ..
-rw-r--r-- 1 root root 23G 10月 29 07:57 lightning.info.log
-rw-r--r-- 1 root root 867K 4月 22 2019 lightning.info.log.bak
-rw-r--r-- 1 root root 5.1M 4月 22 2019 lightning.info.log.bak2
文件夹大小
ls -l 这类命令只能查看文件大小,不能查看文件夹大小。
查看文件夹大小使用,
- du,dist usage
样例:du -h --max-depth=1
36M ./audit
393M ./journal
4.0K ./rhsm
21M ./sa
23G ./shouwei
4.0K ./ntpstats
164K ./anaconda
4.0K ./chrony
20K ./multi-nic-util
12K ./tuned
47M ./nginx
48K ./supervisor
23G .
文件目录
mkdir 创建目录
使用 mkdir -p xx
能够确保创建目录,即便目录存在也不会抛出异常。
- mkdir 创建目录
mkdir -p,—parent,如果不存在会自动创建父级目录
mkdir -p a/b, 新建一个 a 目录,并在a目录下新建 b 目录。
一次创建多个文件:
mkdir -p /home/user/{test,test1,test2}
文件加斜杠和不加斜杠
加斜杠代表的是这个文件下的文件,不加斜杠代表的是这个目录。
# aaa 内有 a b c 三个文件
$ ls
aaa bb
# 不带杠是复制整个文件夹
$ cp -r ./aaa ./bb
$ ls ./bb
$ aaa
# 带杠是复制文件夹下面的文件,不包括文件夹本身
$ cp -r ./aaa/ ./bb
$ ls
$ a b c
文件传输
- scp
scp [参数] [原路径] [目标路径]
cp 是本机拷贝,scp 能够跨服务器拷贝。
sudo scp -r -i ~/.ssh/id_rsa mysql80-community-release-el7-1.noarch.rpm root@134.175.142.94:/root/mysql
命令参数:
- -1 强制scp命令使用协议ssh1
- -2 强制scp命令使用协议ssh2
- -4 强制scp命令只使用IPv4寻址
- -6 强制scp命令只使用IPv6寻址
- -B 使用批处理模式(传输过程中不询问传输口令或短语)
- -C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
- -p 留原文件的修改时间,访问时间和访问权限。
- -q 不显示传输进度条。
- -r 递归复制整个目录。
- -v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
- -c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
- -F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。
- -i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
- -l limit 限定用户所能使用的带宽,以Kbit/s为单位。
- -o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式,
- -P port 注意是大写的P, port是指定数据传输用到的端口号
- -S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
查看文件占用
lsof,是 list open file 的简写,这个命令可以查看某个文件或端口被哪个那些进程占用。
由于 linux 中一切皆文件,所以不止是文件,端口号、进程号等也可以使用此命令打开。
这个命令需要 yum 安装。
// 查看某个文件被哪些进程在读写
lsof 文件名
// 查看某个进程打开了哪些文件
lsof -c 进程名
lsof -p 进程号
// 查看某端口运行的程序
lsof -i :potNum
文件链接
ls -i
, 查看文件的 inode
18643163 employeeHandbook.docx 18643096 seatingChart.pdf 18649352 test_link.sh@
18643084 entryInfo.docx 18649340 test.sh* 18649340 xx*
xx 是 test.sh 的硬链接,可见它的 inode 和 源文件 test.sh 的 inode 一致;
test_link.sh 是软连接,它的就不一致;
硬链接
硬链接好比是镜像,
- 镜像源修改镜像也要修改,镜
- 像源即便被删除了,但是镜像还可以继续存在;
硬链接的两个文件是两个独立引用计数的文件,他们共用一份数据,所以他们的 inode 是相同的。
ln source_file target_file_name
target_file_name 可以省略,即 ln source_file
, 这种情况下创建的软链接与 source_file 同名。
软链接
https://blog.csdn.net/geerniya/article/details/79093301
软链接就是一个文件,固定大小,3kb,它存储着被链接文件的元信息,路径和 inode 节点;
软链接是一个文件,所以它有自己的 inode 和原信息。软链接和原文件的联系,就在它存储的内容里头。
- 创建软链接时不要使用相对目录
创建软链接时如果使用相对目录,使用 ls -al
查看显示如下,
ql_centos@ -> ./scripts/docker/ql_centos7.sh
这样移动软链接后,链接就无法使用。
- 批量创建软连接
ln 命令支持批量创建软连接,与通配符匹配效果好。
ln -s /tmp/*.log /tmp/lnk/
- 删除软链接
当链接是文件夹时,删除文件名结尾不要加 ‘/‘, 否则会把该文件夹删除。
rm xxx # 这样写就可以删除软链接
rm xxx/ # 当xxx是文件夹时,可能会把源文件夹删除掉。
文件链接与复制
- 硬链接是一个镜像;通过
ls -i
可以看到,这两个文件的 inode 是同一个; - 软链接是个快捷方式,软链接的元信息内存储的是原文件的 inode, 用来指向原文件;
- 复制,就是对原文件完全进行拷贝,和原来的文件没有任何关系了。
ls 命令详解
引用计数
ls -al
第2行显示的是引用计数。drwxr-xr-x 8 yutou staff 256B 3 8 11:13 ./
drwxr-xr-x 3 yutou staff 96B 3 8 10:15 ../
-rw-r--r--@ 1 yutou staff 55K 3 8 10:14 employeeHandbook.docx
-rw-r--r--@ 1 yutou staff 36K 3 8 10:13 entryInfo.docx
-rw-r--r--@ 1 yutou staff 15K 3 8 10:13 seatingChart.pdf
-rwxr-xr-x 2 yutou staff 11B 3 8 10:45 test.sh*
lrwxr-xr-x 1 yutou staff 40B 3 8 10:46 test_link.sh@ -> /Users/yutou/shouxin/companyInfo/test.sh
-rwxr-xr-x 2 yutou staff 11B 3 8 10:45 xx*
查看文件总数
ls ./xx | wc -l
遍历子目录
参考: https://www.xiaoz.me/archives/14180traveDir.sh
#! /bin/bash
function read_dir(){
for file in `ls $1` #注意此处这是两个反引号,表示运行系统命令
do
if [ -d $1"/"$file ] #注意此处之间一定要加上空格,否则会报错
then
read_dir $1"/"$file
else
echo $1"/"$file #在此处处理文件即可
fi
done
}
#读取第一个参数
read_dir $1
上一个步骤已将脚本创建完毕,接下来只需要执行./traveDir.sh /xxx/wp-content/uploads
即可,xxx
请修改为您站点的绝对路径。如果您想要导出为.txt
文本,直接使用>>
流操作即可。
#导出为.txt
./traveDir.sh /xxx/wp-content >> 1.txt