powershell_利用ls与管道符进行稍为复杂的移动复制操作/批量移动文件夹

帮助文档

很多高级用法在对应cmdlet 帮助中的example部分都有介绍到
help mv
help cp

在这里插入图片描述

  • 这里利用ls(即get-chiledItem)来进行对象筛选,再通过管道符传送给mv(即move-item)
  • 一般的,mv需要两个参数,所以这里使用-Destination来指明其后面跟的是目标目录(而管道符传送过来的结果则作为被移动对象)

举例

eg.将当前有关pdf文件都移动到pdfTools目录下(pdfTools目录和其他需要被移动的目录位于同一个目录下)

solution for files:

ls *pdf* -Exclude pdfTools | mv -Destination .\pdfTools\
  • exclude pdfTools选项可以从被移动对象中剔除,否则会发生自己移动到自己的错误操作。
  • -Depth 0 即使指定递归深度为0,在移动的时候还是会破坏目录结构(除非被移动目录的匹配模式不会覆盖到目标目录)

solution for both files and directories:

  • 借助foreach 您可以做更加灵活的控制,但语句相对较长
  • 您可以编写像以下流程的语句来移动目录而不会发生结构破坏
  • 如果撤销掉-Directory选项,那么对文件和目录将同时起作用
例1:

在这里插入图片描述

ls *pdf* | foreach {if($_.Name -ne "pdfTools") {mv $_ ./pafTools}}
例2:(附带移动过程(-Verbose))

在这里插入图片描述

在这里插入图片描述

中间变量

于此同时,您可以选择用一个临时变量来保存ls筛选的结果
然后再双参数命令上传入该变量

posted @   xuchaoxin1375  阅读(12)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2022-08-26 math_高数公式每日一过_part2(private)
点击右上角即可分享
微信分享提示