目录
1.shell脚本问题
10.08
问题1 -f "$file"
[ -f "$file" ]
:如果变量$file
引用的文件存在并且是一个普通文件,则返回true
。-
[ ! -f "$file" ]
:如果变量$file
引用的文件不存在或者不是一个普通文件,则返回true
。
3. basename "$file_path" 提取了 report.txt。
basename "$file_path" .txt 提取了不带 .txt 后缀的文件名。
10.09
rm -rf /path/to/folder/* 删除目录下所有内容
删除一个目录下所有包含 "hash_frame" 的文件夹 :
find /sdb/dengsj/home/yolov7/yolov7-sc/sc_hash_frame_zip -type d -name "*hash_frame*" -exec rm -rf {} +
find
:这是 Linux 系统中用于查找文件的命令。
/sdb/dengsj/home/yolov7/yolov7-sc/sc_hash_frame_zip
:这是查找操作的起始目录。
-type d
:这个选项告诉find
命令只查找目录(文件夹)。-type f
:查找普通文件(不包括目录)。-type d
:查找目录。
-name "*hash_frame*"
:这个选项指定了查找文件的名称模式。*hash_frame*
表示查找所有文件名中包含 "hash_frame" 的文件或目录。
-exec
:这个选项允许对find
命令找到的每个文件执行指定的命令。
rm -rf {} +
:这是-exec
选项指定的命令。rm
是删除文件的命令,-r
表示递归删除(用于目录),-f
表示强制删除(不提示确认)。大括号{}
是一个占位符,代表find
命令找到的每个文件的名称。加号+
表示find
命令会将所有找到的文件名作为参数一次性传递给rm
命令。find /sdb/dengsj/home/yolov7/yolov7-sc/sc_hash_frame_zip -type d -name "*hash_frame*" 这将列出所有匹配的文件夹
find /sdb/dengsj/home/yolov7/yolov7-sc/sc_hash_frame_zip -type f -name "*hash_frame*" -exec rm {} + 删除文件含有hash_frame字符的所有文件
指令 du
指令 du -ah /sdb/dengsj/home/yolov7/yolov7-sc/sc | sort -rh
du -ah /sdb/dengsj/home/yolov7/yolov7-sc/sc
:
du
:磁盘使用情况的命令。-a
或--all
:显示所有文件和目录的大小。-h
或--human-readable
:以易读的格式显示文件大小(例如 KB、MB、GB)。/sdb/dengsj/home/yolov7/yolov7-sc/sc
:指定要检查的目录路径。这个命令会列出
/sdb/dengsj/home/yolov7/yolov7-sc/sc
目录下所有文件和子目录的大小。
|
:
- 管道符号,将前一个命令的输出作为后一个命令的输入。
sort -rh
:
sort
:排序命令。-r
或--reverse
:反向排序,从大到小。-h
或--human-numeric-sort
:按照人类可读的数字大小排序。组合后的命令会输出
/sdb/dengsj/home/yolov7/yolov7-sc/sc
目录下所有文件和子目录的大小,并按照大小从大到小排序。
find及其zip指令使用
# 使用find命令查找所有包含'hash_frame'的文件夹
FOLDERS=$(find "$DIR_PATH" -type d -name "*hash_frame*")# 遍历文件夹路径
for FOLDER in $FOLDERS
do
# 定义压缩文件的完整路径
ZIP_FILE="${FOLDER}.zip"# 检查文件夹是否存在
if [ -d "$FOLDER" ]; then
# 压缩文件夹
echo "Compressing $FOLDER into $ZIP_FILE..."
zip -r "$ZIP_FILE" "$FOLDER"
echo "Compression complete."
else
# 文件夹不存在时打印错误信息
echo "Error: Folder $FOLDER does not exist."
fi
done
find ${remote_dir} -type f \( -name '*.zip' -o -name '*.7z' \)中的 转义字符知识:
在命令行和脚本中,转义(escaping)是一种机制,用于告诉解释器(如shell)将随后的字符解释为字面意义,而不是它的特殊含义。
在Unix和Linux的shell中,某些字符具有特殊的意义,比如:
*
:匹配任意数量的字符。?
:匹配任意单个字符。$
:表示变量。`
:引用命令的输出。(
和)
:用于命令的分组。当你需要使用这些特殊字符的字面意义时,就需要使用反斜杠
\
来转义它们,这样shell就不会把它们解释为特殊字符,而是按照原样处理。
unzip
unzip -l filename.zip
unzip
命令是一个用于解压缩.zip
格式压缩文件的实用工具。以下是一些常用的unzip
命令选项:
-l
:列出压缩文件中的文件列表,但不解
-d <directory>
:将解压缩的文件放入指定的
screen
screen -ls 查看会话列表
按
Ctrl + a
+ d然后按d
来分离会话screen -r 1234.mysession 连接会话列表
screen -d mingzi 远程detach会话
10.10
问题一 :ll 指令
你可以指定一个路径,它会列出该路径下的目录内容。
常见选项
-l
:长格式列表,显示文件的详细信息。-a
:所有文件,显示所有文件,包括以点(.)开头的隐藏文件。-h
:人性化的文件大小,显示易于阅读的文件大小(例如,KB、MB、GB)。-t
:按修改时间排序,显示文件列表时,按照修改时间排序。-r
或-R
:反向或递归,-r
表示反向排序,-R
表示递归列出所有子目录的内容
问题二 列表推导表达式
images = [f for f in os.listdir(image_directory) if os.path.isfile(os.path.join(image_directory, f))]
a = [1, 2, 3, 'a', 'b', 'c']
# 定义一个空列表b,用于存放满足条件的元素
b = []
# 遍历列表a中的每一个元素
for i in a:
if isinstance(i, int):
# 将当前整数元素i进行平方操作
b.append(i ** 2)
print(b)
os.listdir()
列举一个目录下所有文件或者文件夹的名字
10.12
os.path.splitext()
os.path.splitext(f)[1].lower()从后分割路径
dest_file01 = os.path.splitext(sour_file)[0] # 得到 map
dest_file02 = os.path.splitext(sour_file)[1] # 得到 .osm如上,可以通过[0]或[1]获得需要位置上的数据。
dest_file01 为 map
dest_file02 为 .osm
并且还可以进行拼接,如下所示:
dest_file03 = os.path.splitext(sour_file)[0] + '_output.txt'
写入txt文件
# 写入文件名到文本文件
with open(output_file, 'w') as file:
for image_file in image_files:
file.write(image_file + '\n')
shutil.move
函数非常灵活,可以根据 source_path
和 target_path
的不同设置,实现不同的文件移动(source给的是目录参数,则为文件移动)和重命名(target给的是文件名字为重命名)操作。
10.21 lsof -i
lsof -i 查看端口占用情况
10.23
ps 指令
ps aux | grep xxx (功能描述:查看系统中所有进程)
PID:进程的 ID 号
%CPU:该进程占用 CPU 资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位 KB;
RSS:该进程占用实际物理内存的大小,单位 KB;
TTY:该进程是在哪个终端中运行的。对于 CentOS 来说,tty1 是图形化终端,
tty2-tty6 是本地的字符界面终端。
pts/0-255 代表虚拟终端。
STAT:进程状态。常见的状态有:R:运行状态、S:睡眠状态、T:暂停状态、Z:僵尸状态、s:包含子进程、l:多线程、+:前台显示START:该进程的启动时间
ps -ef | grep xxx (功能描述:可以查看子父进程之间的关系)
UID:用户 ID
PID:进程 ID
PPID:父进程 ID
C:CPU 用于计算执行优先级的因子。数值越大,表明进程是CPU 密集型运算,执行优先级会降低;数值越小,表明进程是 I/O 密集型运算,执行优先级会提高
STIME:进程启动的时间
TTY:完整的终端名称 TIME:CPU 时间 CMD:启动进程所用的命令和参数
10.25 np.any readline strip grep 挂载指令
np.any
是 NumPy 库中的一个函数,它用来检查数组中是否有任何元素满足指定的条件。如果数组中至少有一个元素为 True
(或者满足其他指定的条件),那么 np.any
函数返回 True
;如果数组中所有元素都不满足条件,则返回 False
。
line.strip().split(' ')[0]
line.strip()
:去除line
字符串两端的空白字符(包括空格、换行符等)。
split(' ')
:将去除空白字符后的字符串按照空格分割成多个部分,这将返回一个字符串列表。[0]
:从列表中获取第一个元素,即类别ID。
line.strip()
:去除line
字符串两端的空白字符(包括空格、换行符等)。
split(' ')
:将去除空白字符后的字符串按照空格分割成多个部分,这将返回一个字符串列表。
[0]
:从列表中获取第一个元素,即类别ID。
files.readlines()
strip()
挂载指令 sudo mount -t vboxsf gongxiang /home/songchao/xiazai 挂在指令
grep 指令