如何提取以‘/’分隔的字符串后半段批量重命名文件名?
批量重命名提取路径分隔符后的文件名
下面提供几种不同环境下的实现方法,按需选择:
一、Linux/macOS 终端命令行
方法1:用basename命令
直接遍历目标文件,借助basename提取纯文件名后重命名:
for file in fastq/SRR*; do mv "$file" "$(basename "$file")"; done
basename会自动剔除文件路径前缀,只保留最后一段文件名。执行后,fastq/目录下的SRRxxx文件会被移动到当前目录,文件名保持SRRxxx。
方法2:用Shell参数扩展
不用额外命令,直接通过Shell的参数扩展提取文件名:
for file in fastq/SRR*; do mv "$file" "${file##*/}"; done
${file##*/}是Shell的语法,意思是删除从字符串开头到最后一个/的所有内容,剩下的就是目标文件名。
二、Windows 环境
PowerShell 命令
打开PowerShell,执行以下命令:
Get-ChildItem -Path .\fastq\SRR* | Rename-Item -NewName { $_.Name } -Destination .\
这条命令会把fastq目录下所有SRR开头的文件移动到当前目录,文件名保留SRRxxx。
命令提示符(CMD)
打开CMD窗口,运行:
for /r fastq %f in (SRR*) do move "%f" "%~nf"
%~nf用于提取文件的纯文件名(不含路径),执行后文件会被移到当前目录。
三、Python 跨平台脚本
如果需要在不同系统通用,写个简单的Python脚本:
import os # 原文件所在的子目录 source_folder = "./fastq" # 遍历目录下的文件 for file_name in os.listdir(source_folder): # 只处理SRR开头的文件 if file_name.startswith("SRR"): # 拼接原文件的完整路径 old_full_path = os.path.join(source_folder, file_name) # 新路径是当前目录下的目标文件名 new_full_path = file_name # 执行重命名/移动操作 os.rename(old_full_path, new_full_path)
保存为rename_files.py,在终端运行python rename_files.py即可。
内容的提问来源于stack exchange,提问作者Top Criminal
相关产品推荐
相关产品推荐

