Ls

如何在 ls 中使用萬用字元來查找數字序列中缺少的文件?

  • November 9, 2020

我正在嘗試在終端中按順序列出失去的文件。雖然這裡存在許多答案,但它們不夠通用,我設法使其適應我的情況。因此,如果您可以做出對更多人有用的足夠通用的答案,請這樣做。

我正在ls {369..422}.avi >/dev/null列出失去的文件,但我不能使用 * 來匹配以 .avi 結尾的任何內容。我怎樣才能做到這一點?

數字不在文件末尾,而是在中間。所以我應該需要類似的東西*numbers*.avi

ls *{369..422}*.avi >/dev/null

這將首先生成像

*369*.avi
*370*.avi
*371*.avi
*372*.avi
*373*.avi
*374*.avi

通過大括號擴展,然後ls將使用這些模式執行,這將為每個無法擴展為目前目錄中的名稱的模式提供錯誤消息。

或者,如果您沒有*名稱中包含的文件:

for name in *{369..422}*.avi; do
   case "$name" in 
       '*'*) printf '"%s" not matched\n' "$name" ;;
   esac
done

這依賴於這樣一個事實,即如果模式與目前目錄中的名稱不匹配,則該模式保持未擴展。這為您提供了一種可能對失去的文件有用的方法,而無需解析ls.

引用自:https://unix.stackexchange.com/questions/391987