簡體   English   中英

macOS - 將目錄中找到的所有特定文件名復制到另一個目錄

[英]macOS - Copy all specific filename found in directories to another directory

我想復制所有(在這種情況下)不同目錄中的 mp4、jpg、png 文件。 我會在 macOS 終端中執行此操作。

例如 :

./dir11/dir2/im.png
./dir11/vi.mp4
./dir12/ima.png
./dir12/main.py
./dir12/dir2/infos.txt
./img.jpg

結果:在found/復制 mp4、jpg 和 png 文件

./found/im.png
./found/vi.mp4
./found/ima.png
./found/img.jpg

您可以使用find查找不同文件名的列表,然后通過xargs將其通過管道傳輸到cp

find ./looking -type f \( -name "*.mp4" -or -name "*.jpg" \) | xargs cp -t ./found

這會將文件從文件夾./looking復制到文件夾/found ...

編輯

或者在您的情況下,您可能只想將./looking替換為./

macOS 的更新版本

由於 macOS cp 不支持-t

find . -type f ( -iname "*.log" -or -iname "*.jpg" ) | sed 's/ /\\ /g' | xargs -I '{}' cp '{}' ../test-out

在哪里:

  • find部分查找所有名為 *.log 或 *.jpg 的文件(不是文件夾),而不是區分大小寫(-iname 而不是 -name)
  • sed部分在路徑中的任何空格之前插入一個“\\”
  • xargs部分使用占位符 ( {} ) 將所有參數放入cp命令。

使用rsync

$ find -E . -regex '.*\\.(jpg|png|mp4)' -exec rsync -avzh {} ./found/ \\;

使用cp

$ find -E . -regex '.*\\.(jpg|png|mp4)' -exec cp {} ./found/ \\;

PS - 不確定哪個更有效。 我通常更喜歡rsync的副本和移動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM