大批量文件管理操作的linux与windows系统命令行终端命令

发布于:2025-09-04 ⋅ 阅读:(24) ⋅ 点赞:(0)

一、创建文件夹

1.1创建单个文件夹

linux终端命令与windows下powershell终端命令一致,注意windows下是powershell终端,而不是cmd终端,本文以下部分使用的都是powershell终端:

mkdir folder01

python代码如下:

import os

os.mkdir('folder01')

1.2创建嵌套文件夹

linux终端命令与windows下powershell终端命令一致,创建嵌套文件夹需在mkdir命令后加上-p参数

mkdir -p folder01/folder02

python代码如下:

import os

os.makedirs('folder01/folder02')

1.3复制文件夹结构不复制内容

linux终端命令如下:

find folder01 -type d -exec mkdir -p folder02/{} \;

windows下powershell终端命令如下:

xcopy folder01 folder02 /t /e

/t:只复制目录结构,/e:包含空目录。

二、移动文件及文件夹

2.1linux系统终端移动文件数量限制

在linux系统中,由于终端的参数展开机制,和命令行参数和环境变量的总长度上限,如果文件数量太多导致拼接后的命令参数字符串超过上限,就会报出如下错误

argument list too long

使用getconf ARG_MAX命令可以得出长度的上限,单位为Byte,一般在linux系统中该上限为2097152,即2MB,假设文件路径平均长度是40个字符,也就是40B,那么文件数量上限为2097152/40≈5.2万。

因此一般如果移动的文件数量超过5万,在linux系统中就不能使用常规的mv命令,而需使用find+mv进行操作。

2.2windows系统终端移动文件数量限制

在windows系统中,powershell客户端上也有命令行参数长度的限制,但由于powershell客户端与linux命令行终端对于通配符的展开机制有所不同,powershell不会一次性把所有文件名拼成一个超长字符串,所以可以处理超过5万个文件,经过实际测试,可以移动约40万以上个文件

2.3批量移动小于等于约5万个文件

以移动txt为后缀的文件为例,
linux终端命令如下:

mv folder01/*.txt folder02/

windows下powershell终端命令与上面linux命令一致。

2.4批量移动大于约5万个文件

以移动txt为后缀的文件为例,
linux终端命令如下:

find folder01 -name "*.txt" -exec mv {} folder02 \;

注意上面命令末尾的;不能省略,否则报错。

三、删除文件及文件夹

3.1删除指定后缀文件

删除txt为后缀的所有文件为例,linux终端命令与windows下powershell终端命令一致

rm folder01/*.txt

同样地,在linux终端,删除文件数量存在2.1小节所说的限制

3.2删除文件夹及文件夹下所有文件

linux终端命令:

rm -rf folder01

-r代表递归删除目录及其内容,可能在目录不可写的情况下提示确认。

-f表示强制删除(忽略不存在的文件,不再提示确认而直接删除)。

windows下powershell终端命令:

rm -r folder01

-r含义与linux终端一直,递归删除目录及其内容,但是如果存在只读、隐藏和系统文件,则不会删除这些文件,同时报错,如下图所示:
在这里插入图片描述

只有加上Force参数,才会将所有文件及文件夹删除,命令如下:

rm -r -Force folder01

四、压缩解压文件

4.1linux终端压缩解压命令

使用zip压缩文件夹命令如下:

zip -r folder01.zip folder01

上述命令在压缩的同时会显示压缩详情,如果想要静默压缩,则可以加上-q参数,命令如下:

zip -q -r folder01.zip folder01

解压缩命令如下:

unzip -d . folder01.zip

同样地,可以加上-q参数,实现静默解压缩。

4.2windowspowershell终端压缩解压命令

powershell自带了对ZIP格式的压缩与解压支持,不需要安装额外软件
压缩文件夹命令如下:

Compress-Archive folder01 folder01.zip

解压命令如下:

Expand-Archive folder01.zip .

上述命令为解压到当前路径。


网站公告

今日签到

点亮在社区的每一天
去签到