Bash是否可以從
是否可以從ls
命令中刪除文件夾前綴
我在一個 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'