在查找名稱中包含給定子句的所有文件

在查找名稱中包含給定子句的所有文件

這是一個普遍的問題,但我的情況是我已經安裝了(我相信它已經安裝了!)gcc arm編譯器,但我在系統中的任何地方都找不到它。我嘗試了下面的命令,但它幾乎返回任何內容

$sudo find . -print | grep -i '.*[arm]'

我相信我正在尋找的文件名稱中可能包含以下子句:

gcc, arm, eabi, 4.8, ....

最好的搜尋詞是什麼?

答案1

您可以使用-name-iname開關find代替greppingfind的輸出;您還可以將搜索範圍縮小到文件,如果您不知道它可能安裝在哪裡,您最好在其中進行搜索,/而不是在當前工作目錄中進行搜索:

sudo find / -type f -name "*gcc*" -o -name "*arm*" -o -name "*eabi*" -o -name "*4.8*"

按照你的評論,您使用 PPA 安裝了它,因此如果可執行檔已新增至您的路徑中,您應該能夠透過運行來確定其位置which arm-none-eabi-gcc;如果沒有,運行sudo find / -type f -name "*arm-none-eabi-gcc*",它應該能夠找到它。

答案2

我安裝了該軟體包並運行:dpkg-query -L gcc-arm-none-eabi。結果是一個文件列表,其中最相關的是/usr/bin/所有以arm-none-eabi.我認為這些就是您正在尋找的文件。

    $ls /usr/bin/arm-none-eabi*
/usr/bin/arm-none-eabi-addr2line   /usr/bin/arm-none-eabi-gcov
/usr/bin/arm-none-eabi-ar          /usr/bin/arm-none-eabi-gdb
/usr/bin/arm-none-eabi-as          /usr/bin/arm-none-eabi-gprof
/usr/bin/arm-none-eabi-c++         /usr/bin/arm-none-eabi-ld
/usr/bin/arm-none-eabi-c++filt     /usr/bin/arm-none-eabi-ld.bfd
/usr/bin/arm-none-eabi-cpp         /usr/bin/arm-none-eabi-nm
/usr/bin/arm-none-eabi-elfedit     /usr/bin/arm-none-eabi-objcopy
/usr/bin/arm-none-eabi-g++         /usr/bin/arm-none-eabi-objdump
/usr/bin/arm-none-eabi-gcc         /usr/bin/arm-none-eabi-ranlib
/usr/bin/arm-none-eabi-gcc-4.9.3   /usr/bin/arm-none-eabi-readelf
/usr/bin/arm-none-eabi-gcc-ar      /usr/bin/arm-none-eabi-size
/usr/bin/arm-none-eabi-gcc-nm      /usr/bin/arm-none-eabi-strings
/usr/bin/arm-none-eabi-gcc-ranlib  /usr/bin/arm-none-eabi-strip

答案3

find命令應該有效:

find . -executable -type f -regex '.*\/[^\/]*\(gcc\|arm\|eabi\|4\.8\)[^\/]*'

解釋:

  • -executable:僅匹配設定了可執行位的檔案。
  • -type f:僅匹配常規文件。
  • -regex ...:搜尋正規表示式。您只需要基本名稱,而不是整個部分,因此我們必須排除/至少一個斜杠後面的斜杠 ()。

相關內容