如何从文件名列表中筛选末尾带*的文件并复制到指定目录
批量筛选末尾带标记星号的文件并复制的解决方案
前提说明:
- 你的文件名列表保存为
file_list.txt - 源文件存放目录路径为
/path/to/source,使用时替换为实际路径即可 - 目标独立目录路径为
/path/to/target,可手动提前创建,也可用下方命令自动创建
Linux/macOS 终端执行方案
适用场景:实际文件名不带末尾的星号(列表里的星号仅为选中标记)
# 自动创建目标目录,目录已存在也不会报错 mkdir -p /path/to/target # 筛选匹配条目后批量复制 grep '\*$' file_list.txt | sed 's/\*$//' | xargs -I {} cp /path/to/source/{} /path/to/target/
适用场景:实际文件名本身末尾就带星号
mkdir -p /path/to/target grep '\*$' file_list.txt | xargs -I {} cp /path/to/source/{} /path/to/target/
校验建议
执行复制前可以先把命令中的cp替换为echo,先打印待复制的文件名列表,确认匹配无误后再执行实际复制操作,避免误拷贝。
Windows PowerShell 执行方案
适用场景:实际文件名不带末尾的星号(列表里的星号仅为选中标记)
# 自动创建目标目录,目录已存在也不会报错 New-Item -ItemType Directory -Path /path/to/target -Force # 筛选匹配条目后批量复制 Get-Content file_list.txt | Where-Object { $_ -match '\*$' } | ForEach-Object { $realFileName = $_.TrimEnd('*') Copy-Item -Path "/path/to/source/$realFileName" -Destination "/path/to/target/" }
适用场景:实际文件名本身末尾就带星号
New-Item -ItemType Directory -Path /path/to/target -Force Get-Content file_list.txt | Where-Object { $_ -match '\*$' } | ForEach-Object { Copy-Item -Path "/path/to/source/$_" -Destination "/path/to/target/" }
内容的提问来源于stack exchange,提问作者manas
相关产品推荐
相关产品推荐

