ubuntu:常用命令记录
记录常会用到的一些命令
中文解压乱码
# 用如下命令可以正常解压
unzip -O cp936 file.zip
查看当前目录下文件个数
ls -lR | grep "^-" | wc -l # R代表子目录
ls -l folder| grep "^-" | wc -l # 查看指定目录
find ./ -type f | wc -l # 查看当前目录下包含子目录内所有文件个数, 效率比上面的命令要快
命令行删除指定日期或以前的文件
在Linux系统中,如果你想根据日期来删除文件,可以使用find命令结合rm命令来实现。这里有一些常见的用法示例:
- 删除特定日期之前的文件
如果你想删除所有在特定日期之前创建或修改的文件,可以使用如下命令:
find /path/to/directory -type f -mtime +天数 -exec rm {} \;
例如,删除所有在7天前的文件:
find /path/to/directory -type f -mtime +7 -exec rm {} \;
- 删除特定日期(例如2023年1月1日)之前的文件
如果你想删除特定日期之前的文件,可以使用-newermt
选项:
find /path/to/directory -type f -newermt "2023-01-01" ! -newermt "2023-01-02" -exec rm {} \;
或者,如果你只想删除在某个具体日期(例如2023年1月1日)之前创建或修改的文件,可以简化命令为:
find /path/to/directory -type f -mtime +$(date +%s -d "2023-01-01") / $(date +%s) -exec rm {} \;
- 假设你想删除某个目录中在特定日期(比如2025年2月12日)创建的所有文件,你可以使用以下命令:
find /path/to/directory -type f -newermt "2025-02-12 00:00:00" ! -newermt "2025-02-13 00:00:00" -exec rm {} \;
这个命令的解释如下:
find /path/to/directory
:在指定的目录及其子目录中查找文件。
-type f
:只查找文件(不包括目录)。
-newermt "2025-02-12 00:00:00"
:查找在这个时间之后修改的文件。
! -newermt "2025-02-13 00:00:00"
:查找不在这个时间之后修改的文件(即,在2025年2月12日当天修改的文件)。
-exec rm {} \;
:对于找到的每个文件,执行rm命令来删除它。{}是一个占位符,表示当前找到的文件名。
- 使用touch命令修改文件时间戳来删除特定日期的文件
如果你只是想删除特定日期的文件,但不完全确定文件名,你可以先用touch命令修改文件的访问时间或修改时间,然后使用find命令来删除这些文件。例如,将所有文件的访问时间设置为特定日期,然后删除:
touch -m -d "2023-01-01" /path/to/directory/*
find /path/to/directory -type f -atime +0 -exec rm {} \;
注意事项:
在使用rm命令删除文件之前,建议先使用ls或find命令配合-print选项来查看将要删除的文件列表,以避免误删重要文件。例如:
find /path/to/directory -type f -mtime +7 -print
对于重要数据,建议先进行备份。使用-exec rm {} \;
时要格外小心,因为这将直接执行删除操作。你也可以考虑使用-exec echo rm {} \;
来先查看哪些文件将被删除。
命令行查看当前目录下所有子目录内文件个数
在Ubuntu中,你可以使用find命令结合管道和wc命令来查看每个子目录中的文件数量。以下是一个命令示例,它会递归地统计当前目录下所有子目录中的文件数量:
for dir in */ ; do echo "$dir has $(find "$dir" -type f | wc -l) files"; done
这个命令会列出当前目录下的每个子目录,以及每个子目录中的文件数量。
解释:
for dir in */ ; do
: 对当前目录下的每一个子目录执行循环。
echo "$dir has $(find "$dir" -type f | wc -l) files"
: 输出子目录的名字和在其中找到的文件数量。
find "$dir" -type f
: 查找子目录中的所有文件。
| wc -l
: 计算find命令输出的行数,即文件数量。
查看当前目录文件大小
ls -hl
#
du -h --max-depth=1
ls -l # 以长格式显示当前目录中的文件和目录
ls -a # 显示当前目录中的所有文件和目录,包括隐藏文件
ls -lh # 以人类可读的方式显示当前目录中的文件和目录大小
ls -t # 按照修改时间排序显示当前目录中的文件和目录
ls -R # 递归显示当前目录中的所有文件和子目录
ls -l /etc/passwd # 显示/etc/passwd文件的详细信息
修改文件(夹)所有者及所属组
# 修改用户组
chgrp -R groupname/groupID file/directories
# 修改用户
chown -R username/userID file/directories
chown -R username:groupname file/folider
docker容器内文件拷贝到本地
docker cp 容器id:文件 本地目录
查看进程
ps aux 或者 ps a
指定关键字查找
ps a | grep python # 查找含有python的所有进程