Bash

是否可以從ls命令中刪除文件夾前綴

  • October 18, 2018

我在一個 bash 腳本中,我想獲取所有文件的列表(比如說所有 jar 文件)。我執行命令ls -1 lib/*.jar並得到輸出:

lib/mylib_1.jar
lib/mylib_2.jar
...

是否有任何選項具有以下輸出:

mylib_1.jar
mylib_2.jar
...

之前製作cd lib不是一個選項,因為我處於循環中,並且需要在父文件夾中才能執行我想要在循環內執行的操作。

我試圖通過鍵入來查找資訊,man ls但沒有找到任何解決方案。

只要我可以將它傳遞給我的ls命令或自給自足,使用另一個命令的解決方案就會很好。

而不是解析 ls你應該find改用。然後您還可以basename在每個文件上執行以剝離前導目錄:

find lib/ -name '*.jar' -exec basename {} \;

使用 GNU find,不需要basename為每個文件都執行,這會更快(尤其是在有很多文件的情況下):

find lib -name '*.jar' -printf '%P\n'

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