【Linux】常用命令 常用命令

【Linux】常用命令
常用命令

查找文件

find .                                              # 列出当前目录及子目录下所有文件和文件夹
find . -type f                                      # 当前目录搜索所有文件
find /home -name "*.txt"                            # 在/home目录下查找以.txt结尾的文件名
find /home -iname "*.txt"                           # 在/home目录下查找以.txt结尾的文件名, 忽略大小写
find . -name "*.txt" -o -name "*.pdf"               # 当前目录及子目录下查找所有以.txt和.pdf结尾的文件
find /usr/ -path "*local*"                          # 文件路径或文件包含path
find . -regex ".*(.txt|.pdf)$"                 # 正则表达式匹配文件路径
find . -iregex ".*(.txt|.pdf)$"                # 正则表达式匹配文件路径, 并忽略大小写
find /home ! -name "*.txt"                          # 查找/home 不已.txt结尾
find . -maxdepth 3 -type f                          # 向下最大深度限制为3
find . -type f -atime -7                            # 最近七天内被访问过的所有文件
find . -type f -atime +7                            # 超过七天内被访问过的所有文件
find . -type f -size +10k                           # 搜索大于10KB的文件

文件操作

cp -rfb ./* ../backup                               # 复制到当前目录的兄弟目录 backup
cp -r aaa/.* ./bbb                                  # 将 aaa 目录下的,所有`.`开头的文件,复制到 bbb 目录中

mv /usr/men/* .                                     # 将目录/usr/men中的所有文件移到当前目录
mv file_1.txt /home/office/                         # 移动文件
mv file_2.txt file_3.txt file_4.txt /home/office/   # 移动多个文件
mv -vn *.txt /home/office                           # 不要覆盖任何已存在的文件
mv -f *.txt /home/office                            # 强制覆盖已经存在的文件

dd if=/dev/zero of=sun.txt bs=1M count=1            # 创建了一个1M大小的文件sun.txt

文本搜索

grep "match_pattern" file_name                      # 搜索指定文件,返回包含“match_pattern” 的文本行
grep "match_pattern" file_name -n                   # 搜索指定文件,返回包含“match_pattern” 的文本行, 并输出行数
grep "match_pattern" file_1 file_2 file_3           # 搜索多个文件,返回包含“match_pattern” 的文本行
grep "match_pattern" file_name -v                   # 输出除之外的所有行
grep "match_pattern" file_name --color=auto         # 标记匹配颜色 --color: never、always、auto
grep -E "[1-9]+" file_name                          # 正则匹配查找
grep -E "[1-9]+" -o file_name                       # 只输出文件匹配部分
grep "text" . -r -n                                 # 递归搜索
grep "match_pattern" file_name -A 3                 # 匹配结果并输出之后3行
grep "match_pattern" file_name -B 3                 # 匹配结果并输出之前3行

统计文件/文件夹大小

du -sh .                                            # 显示当前目录大小
du -sh *                                            # 显示各个文件和目录大小
du -sh * | sort -rh                                 # 文件从大到小排序
du --time                                           # 显示目录或该目录子目录下所有文件的最后修改时间
du -sh * --time                                     # 显示当前目录各个文件/文件夹最后修改时间
du -sh ./*/                                         # 只显示当前目录下子目录的大小

组合使用

find . -type f -name "*.log" | xargs grep "warning"                                             # 查找符合条件文件,并搜索关键字
find . -name "*.py" | xargs cat | grep -v ^$ |wc -l                                             # 代码行数统计, 排除空行
grep -i "warning" > result.log                                                                  # 查找结果写入文件
echo `date +%Y%m%d%H%M%S` | xargs -I {} sh -c 'mkdir ./bak/{}; cp -a /mongodb/data ./bak/{}'    # 按日期创建文件夹备份