大批量文件管理操作的linux与windows系统命令行终端命令
大批量文件管理操作的linux与windows系统命令行终端命令
- 一、创建文件夹
- 1.1创建单个文件夹
- 1.2创建嵌套文件夹
- 1.3复制文件夹结构不复制内容
- 二、移动文件及文件夹
- 2.1linux系统终端移动文件数量限制
- 2.2windows系统终端移动文件数量限制
- 2.3批量移动小于等于约5万个文件
- 2.4批量移动大于约5万个文件
- 三、删除文件及文件夹
- 3.1删除指定后缀文件
- 3.2删除文件夹及文件夹下所有文件
- 四、压缩解压文件
- 4.1linux终端压缩解压命令
- 4.2windowspowershell终端压缩解压命令
一、创建文件夹
1.1创建单个文件夹
linux终端命令与windows下powershell终端命令一致,注意windows下是powershell终端,而不是cmd终端,本文以下部分使用的都是powershell终端:
mkdir folder01
python代码如下:
import osos.mkdir('folder01')
1.2创建嵌套文件夹
linux终端命令与windows下powershell终端命令一致,创建嵌套文件夹需在mkdir命令后加上-p参数:
mkdir -p folder01/folder02
python代码如下:
import osos.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 .
上述命令为解压到当前路径。