Bash 或 Powershell 将特定大小的文件移动到特定命名约定的目录中

Bash 或 Powershell 将特定大小的文件移动到特定命名约定的目录中

我们在文件管理器的顶层“客户”文件夹下有一个客户列表。客户文件夹下是实际的客户文件夹,一些文件夹的命名约定为“client_test”,其他文件夹的命名约定为“111_1111”。我需要扫描所有子文件夹,查找所有具有 *_[0-9] 的客户(如 111_1111 客户),如果 footer.jpg 的大小不超过 4903 字节,则用新的 footer.jpg 替换它。基本上,如果客户修改了原始页脚,我们希望保留它,但如果没有,我们希望用新的重新命名的页脚覆盖页脚。非常感谢您的帮助!

答案1

如果您根据需要修改路径,我认为这一点 PowerShell 就可以解决问题。首先测试一下,看看这是否会舍入您要替换的文件:

gci c:\Clients\*\footer.jpg |
   ?{($_.directory.name -match ''^\d+-\d+$') -and ($_.length -eq 4904)}

如果有效,请使用以下命令:

gci c:\Clients\*\footer.jpg |
   ?{($_.directory.name -match '^\d+-\d+$') -and ($_.length -eq 4904)} |
       %{copy-item 'c:\NewArtwork\footer.jpg' "$($_.directory)\footer.jpg" -force}
  • gci = 获取子项
  • ? = 哪里对象
  • % = ForEach-对象

基思

相关内容