簡體   English   中英

復制名稱中帶有偶數的文件-bash

[英]Copying files with even number in its name - bash

我想從/ usr / lib復制所有文件,該文件以.X.0.0結尾,其中X是偶數。 是否有比以下方法更好的方法來選擇所有文件?

ls /usr/lib | grep "[02468].0.0$"

我的解決方案存在的問題是,如果文件名為“ xy.800.0.0”,則需要使用括號三次,以此類推。

只需使用全局擴展來匹配文件即可:

cp /usr/lib/*.*[02468].0.0 /path/to/destination

在將文件作為參數傳遞給cp之前,shell會將該模式擴展到文件列表。

由於標記了Bash,因此可以使用擴展的glob使匹配更加嚴格:

shopt -s extglob failglob
cp /usr/lib/*.*([0-9])[02468].0.0 /path/to/destination

它匹配0個或多個其他數字,后跟一個偶數數字,如果沒有文件匹配,則根本不運行命令。

您可以使用擴展的grep正則表達式僅匹配偶數:

ls -1q /usr/lib | grep -E "\.[0-9]*[02468].0.0$"

但是,正如Tom所建議的,有比解析ls的輸出更好的選擇。 使用glob擴展通常更安全,更快捷,並且只需將所有內容放入python腳本即可維護。

暫無
暫無

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

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