簡體   English   中英

在 bash 中,查找、排序和復制

[英]In bash, Find, Sort and Copy

我正在嘗試對包含許多文件夾和文件的文件夾進行搜索。 我想找到最新的 20 個快速時間並復制到特定目錄“New_Directory”。

到目前為止,我得到了這個:

find .  -type f -name '*.mov' -print0 | xargs -0 ls -dtl | head -20 | xargs -I{} echo {}

這會找到我的文件並使用大小/日期/名稱(以 ./ 開頭)打印它們

但是,如果我將命令更改為此(在末尾添加 cp):

find .  -type f -name '*.mov' -print0 | xargs -0 ls -dtl | head -20 | xargs -I{} cp {} /Volume/New_Directory/

我得到錯誤:

cp: illegal option -- w
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory
cp: illegal option -- w
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory
.... (20 times)

我在 mac OS 上使用終端。

請建議如何解決此問題或建議更好的方法。 謝謝你。

嘗試解構你的管道,看看發生了什么。

find .  -type f -name '*.mov' -print0 | xargs -0 ls -dtl | head -20 | 

為您提供 20 個最新mov文件的列表。 丟失的樣子:

-rw-r--r-- 1 ljm users 12449464 Jan 10 16:24 ./05ED-E769/DCIM/215___01/IMG_5902.mov
-rw-r--r-- 1 ljm users 14153909 Jan 10 16:00 ./05ED-E769/DCIM/215___01/IMG_5901.mov
-rw-r--r-- 1 ljm users 13819624 Jan 10 15:58 ./05ED-E769/DCIM/215___01/IMG_5900.mov

因此,您的xargs|cp會將其作為輸入。

這將是

cp -rw-r--r-- 1 ljm users 13819624 Jan 10 15:58 ./05ED-E769/DCIM/215___01/IMG_5900.mov /Volume/New_Directory/

如果我們查看您的錯誤消息,

cp: illegal option -- w

cp -r沒問題, cp -rw會產生這個信息。 所以這與我所說的一致。

所以,問題是為什么-l在副本中。 如果您刪除長格式,您將得到您所需要的。

作為旁注,為什么ls -d ,如果您的find確保-type f

find .  -type f -name '*.mov' -print0 | xargs -0 ls -t | head -20 | xargs -I{} cp {} /Volume/New_Directory/

應該做你想做的事,但請記住,你正在解析ls的 output ,這被認為不是一個好主意。

就個人而言,我會

find . -type f -printf "%T@ %p\n" |
    sort -n |
    cut -d' ' -f 2- |
    tail -n 20 |
    xargs -I{} cp {} /Volume/New_Directory/

你使用下面的腳本。

find . -type f -name '*.mov' | ls -1t | head -n 20 |
xargs -n 1 -I {} realpath {} |
xargs -n 1 -I {} cp {} /Volume/New_Directory/

暫無
暫無

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

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