Shell
在特定目錄中查找文件
我有一個大學練習,即“查找名稱以“.xls”結尾的所有文件,以及包含單詞“SCHEDULE”的目錄和子目錄,而不使用管道並且只使用一些命令 GREP、FIND、CUT,粘貼或 LS
我已經達到了這個命令:
ls *.xls /users/home/DESKTOP/*SCHEDULE
這僅向我顯示桌面上的 .xls 文件,並打開名稱上帶有 SCHEDULE 的所有目錄,但是當它這樣做時,它會向我顯示目錄中的所有文件,其中僅包含 .xls 文件。
假設“文件”是指“正常文件”,而不是目錄、符號連結、套接字、命名管道等。
要查找所有具有文件名後綴
.xls
且位於目前目錄中的目錄中或目錄下且SCHEDULE
名稱中包含字元串的正常文件:find . -type f -path '*SCHEDULE*/*' -name '*.xls'
通過我們測試目前正在處理
-type f
的事物的文件類型。find
如果它是正常文件(f
類型),則考慮下一個測試(否則,如果它不是文件,則檢查下一個)。該
-path
測試是針對find
目前正在檢查的文件的完整路徑名的測試。如果此路徑名匹配*SCHEDULE*/*
,將考慮下一個測試。由於模式的後面部分,該模式將只匹配SCHEDULE
目錄名稱(而不是最終文件名) 。/
最後一個測試是針對文件名本身的測試,如果文件名以
.xls
.預設情況下,將列印通過所有測試的任何路徑名。
您還可以將命令縮短為
find . -type f -path '*SCHEDULE*/*.xls'