我有一个文件夹,里面有“好”的 JPG 文件。然后我又有一个文件夹,里面有所有的 JPG 文件和它们的 RAW 文件。我该如何根据好文件夹中的文件删除 JPG+RAW 文件?
即使有一个应用程序可以做到这一点,那就太好了!
答案1
这里有一个简单的解决方案,运行中的命令Powershell
,记得先备份!
首先获取第一个目录中的文件列表(好的)
0:$goodfiles = (Get-ChildItem -Path C:\Users\DBB\Pictures\GoodPics -Name)
将路径更改为您想要的路径!
(注意:为了方便起见,如果好文件夹中有非 jpeg 文件,您也可以在此处使用“Pattern”参数)
然后,切换到想要过滤的目录:
1:cd C:\Users\DBB\Pictures\UnfilteredPics
将路径更改为您想要的路径!
删除同名项:
2:foreach ($f in $goodfiles) {rm -f $f}
删除相应的 RAW 文件(如果您愿意):
3:foreach ($f in $goodfiles) {rm -f $f.replace('.jpg', '.raw')}
解释:
- 获取好文件列表 - 仅获取其名称(-Name),将其存储在
$goodfiles
- 切换目录
- 强制删除每个与任何文件同名的文件
$goodfiles
- 强制(rm 中的 -f),这样如果不存在,就不会出现错误 - 删除相应扩展名为 .RAW 而不是 .JPG 的文件(请注意,
1.jpg
好的文件会导致1.raw
文件被删除,而不是1.jpg.raw
)
可复制的、语法高亮的代码:
# Get a list of the good files - just their names (-Name), store it in $goodfiles
$goodfiles = (Get-ChildItem -Path C:\Users\DBB\Pictures\GoodPics -Name)
# Switch directory
cd C:\Users\DBB\Pictures\UnfilteredPics
# Forcefully remove each file with the same name as any file in $goodfiles - forcefully (-f in rm) so that if it doesn't exist, there won't be an error
foreach ($f in $goodfiles) {rm -f $f}
# Remove files with corresponding extension as .RAW instead of .JPG (note that 1.jpg good file will cause 1.raw file to be removed, not 1.jpg.raw)
foreach ($f in $goodfiles) {rm -f $f.replace('.jpg', '.raw')}