本文目录导读:

可以的!实用脚本完全可以批量截断,截断”可能有几种不同的含义,我分别给你介绍几种常见的批量截断场景和对应的脚本方案:
批量截断文件名(缩短文件名)
如果你有一堆文件需要缩短文件名到指定长度:
Windows (PowerShell):
# 将当前目录下所有.txt文件截断到10个字符
Get-ChildItem *.txt | ForEach-Object {
$newname = $_.BaseName.Substring(0, [Math]::Min(10, $_.BaseName.Length)) + $_.Extension
Rename-Item $_.FullName -NewName $newname
}
Linux/Mac (Bash):
# 截断文件名到前10个字符
for f in *.txt; do
base=$(basename "$f" .txt)
newname="${base:0:10}.txt"
mv "$f" "$newname"
done
批量截断文件内容(保留前N行/字符)
保留前100行:
# Linux
for f in *.log; do
head -n 100 "$f" > "truncated_$f"
done
保留前1000个字符:
# Linux
for f in *.txt; do
dd if="$f" of="truncated_$f" bs=1000 count=1 2>/dev/null
done
批量截断文本行(每行取前N个字符)
Python脚本:
import os
def truncate_lines(input_file, output_file, max_chars=80):
with open(input_file, 'r') as f_in, open(output_file, 'w') as f_out:
for line in f_in:
f_out.write(line[:max_chars] + '\n')
# 批量处理所有.txt文件
for filename in os.listdir('.'):
if filename.endswith('.txt'):
truncate_lines(filename, f"truncated_{filename}")
批量截断CSV/Excel数据(Python实用脚本)
import pandas as pd
import os
# 批量处理所有csv文件,只保留前100行
for file in os.listdir('.'):
if file.endswith('.csv'):
df = pd.read_csv(file)
df.head(100).to_csv(f"truncated_{file}", index=False)
配合工具的快速方案
使用 Vim 批量截断:
# 批量截断所有txt文件到50行
for f in *.txt; do
vim -c "normal 51GdG" -c "wq" "$f"
done
使用 sed 批量截断每行:
# 每行只保留前80个字符
sed -i 's/^\(.\{80\}\).*/\1/' *.txt
推荐给你的实用脚本组合
如果你经常需要处理这类任务,可以把这个保存为 batch_truncate.sh:
#!/bin/bash
# 批量截断工具 - 多功能版
usage() {
echo "用法: $0 [选项] <文件模式>"
echo " -n N 保留前N行"
echo " -c N 每行保留前N个字符"
echo " -f N 截断文件名到N个字符"
exit 1
}
while getopts "n:c:f:" opt; do
case $opt in
n)
for f in ${@:$OPTIND}; do
head -n $OPTARG "$f" > "truncated_$f"
done
;;
c)
for f in ${@:$OPTIND}; do
sed -i "s/^\(.\{$OPTARG\}\).*/\1/" "$f"
done
;;
f)
for f in ${@:$OPTIND}; do
base="${f%.*}"
ext="${f##*.}"
newname="${base:0:$OPTARG}.$ext"
mv "$f" "$newname"
done
;;
*) usage;;
esac
done
使用示例:
# 保留前100行 ./batch_truncate.sh -n 100 *.log # 每行保留前50个字符 ./batch_truncate.sh -c 50 *.txt # 文件名截断到8个字符 ./batch_truncate.sh -f 8 *.jpg
你想做哪种类型的截断?可以告诉我具体需求,我给你定制一个更精准的脚本!