搜尋資料夾僅顯示某些單字

搜尋資料夾僅顯示某些單字

我有一個包含以下文件的資料夾:

ondemand_kvm131_img.2
vm114_img.2
vm114_img.3
ondemand_vm205_img.3
label_ondemand_kvm131_img.1
vm117_img.1

我想僅有的顯示“名稱”,因此在這種情況下輸出應該是

kvm131
vm114
vm114
vm205
kvm131
vm117

如何才能做到這一點?透過使用 sed?格雷普?提前致謝。

答案1

嘗試這個:

ls -1 | sed 's/_img.*//;s/.*_//'

答案2

有多種方法可以完成此操作,具體取決於名稱的精確格式以及您打算用它來做什麼。最簡單的可能是ls | sed

$ ls | sed 's/^\(.*_\)*\([^_]*\)_img\.[0-9]/\2/'
kvm131
kvm131
vm205
vm114
vm114
vm117

如果您的檔案名稱是正常的並且您只是想要一個視覺外觀,那麼這會很好,但是如果您對名稱進行更多操作,則奇怪的檔案名稱可能會出現錯誤。您可以像這樣單獨獲取它們:

$ for file in *; do left=${file%_img.?}; base=${left##*_}; echo $base; done 
kvm131
kvm131
vm205
vm114
vm114
vm117

將 替換echo為您選擇的命令。如果您總體上有不同的格式,則可以變更這兩個選項以更緊密地匹配格式。

相關內容