如何编写脚本将3个文件的大小以GB为单位输出到文本文件?
如何编写脚本将3个文件的大小以GB为单位输出到文本文件?
嗨,这个需求其实挺容易实现的,我给你分两种常见操作系统的方案,你按需选就行:
针对Linux/macOS(Bash脚本)
咱们可以用stat命令获取文件的字节数,再通过awk转换成GB单位,同时处理文件不存在的情况避免报错。
你可以创建一个名为get_file_sizes.sh的脚本,内容如下:
#!/bin/bash # 替换成你要检查的三个文件路径/名称 TARGET_FILES=("document.pdf" "photo.jpg" "data.zip") # 指定输出的文本文件名 OUTPUT="file_sizes_in_gb.txt" # 先清空输出文件(如果已存在) > "$OUTPUT" echo "文件大小(GB)统计结果:" >> "$OUTPUT" echo "------------------------" >> "$OUTPUT" for FILE in "${TARGET_FILES[@]}" do if [ -f "$FILE" ]; then # 获取字节数并转换为二进制GB(1GB=1024^3字节),保留两位小数 SIZE_GB=$(stat -f%z "$FILE" | awk '{printf "%.2f", $1/(1024*1024*1024)}') echo "$FILE: $SIZE_GB GB" >> "$OUTPUT" else echo "$FILE: 该文件不存在" >> "$OUTPUT" fi done echo "统计完成,结果已保存到 $OUTPUT"
使用方法:
- 把脚本里的
TARGET_FILES数组替换成你实际要检查的三个文件 - 在终端里给脚本加执行权限:
chmod +x get_file_sizes.sh - 运行脚本:
./get_file_sizes.sh
如果需要用十进制GB(1GB=1000^3字节,也就是硬盘厂商常用的计算方式),只需要把awk里的1024*1024*1024改成1000*1000*1000就行。
针对Windows(PowerShell脚本)
Windows下用PowerShell实现更方便,它自带的文件对象就能直接获取长度,再做单位转换。
创建一个名为Get-FileSizes.ps1的脚本,内容如下:
# 替换成你要检查的三个文件路径/名称 $targetFiles = @("document.pdf", "photo.jpg", "data.zip") # 指定输出的文本文件名 $outputFile = "file_sizes_in_gb.txt" # 先清空输出文件(如果已存在) if (Test-Path $outputFile) { Remove-Item $outputFile } Add-Content $outputFile "文件大小(GB)统计结果:" Add-Content $outputFile "------------------------" foreach ($file in $targetFiles) { if (Test-Path $file -PathType Leaf) { $fileInfo = Get-Item $file # 转换为二进制GB,保留两位小数 $sizeGB = [math]::Round($fileInfo.Length / 1GB, 2) Add-Content $outputFile "$file: $sizeGB GB" } else { Add-Content $outputFile "$file: 该文件不存在" } } Write-Host "统计完成,结果已保存到 $outputFile"
使用方法:
- 替换脚本里的
$targetFiles数组为你的目标文件 - 右键点击脚本文件,选择“用PowerShell运行”;或者打开PowerShell终端,切换到脚本所在目录,执行
.\Get-FileSizes.ps1
同样,如果要十进制GB,把1GB换成1000*1000*1000即可。
备注:内容来源于stack exchange,提问作者inadmin
相关产品推荐
相关产品推荐

