我對 bash 腳本很陌生,但我希望構建一個腳本,該腳本基本上遍歷目錄及其子目錄和檔案。
頂級目錄將是影像的位置,因此頂級目錄可能是“293 House Street”,其中將是每個房間“浴室”、“廚房”等的子目錄,在這些子目錄中將是影像。也可能在頂層找到影像。
我想在找到檔案后呼叫 PHP 命令,并為要使用的資料提供一些引數。
php process_directories.php -a "293 House Street" -p "PATH_OF_FILE" -f "FILE"
-a 將是地址 // 對于當前目錄中找到的每個檔案,這將始終相同。
-p 將是檔案的路徑
-f 將是檔案。
有沒有一種好方法可以制作這樣的腳本?
uj5u.com熱心網友回復:
修改您的 php 腳本,使其將完整路徑作為單個引數并提取 3 個子部分(簡單)。然后,使用該find實用程式:
find "293 House Street" -type f -exec php process_directories.php {} \;
注意:命名process_directories.php處理單個檔案的 php 腳本有點違反直覺。你確定你會記住它的作用,比如說,一周?
uj5u.com熱心網友回復:
我不認為你可以直接用命令來做,find但你可以用 Bash 回圈它的結果:
#!/usr/bin/env bash
while IFS= read -d '' -r filepath
do
dirpath="${filepath%/*}"
filename="${filepath##*/}"
php process_directories.php -a "293 House Street" -p "$dirpath" -f "$filename"
done < <(find . -type f -print0)
${filepath%/*}是$filepath但/洗掉了最后一個到最后(即目錄路徑)。${filepath##*/}是$filepath但與啟動到最后/洗掉(即檔案名)。find . -type f將輸出當前目錄及其子目錄中的所有檔案,以 為前綴./,以確保上述兩個專案符號正常作業。- 選項
-print0的find聯合read -d ''保證,通過使用NULL位元組作為隔板,可以正確地處理每個路徑(其在Linux檔案系統,可以由任何字符,但的NULL)。
備注:你也可以修改你的 PHP 腳本來做同樣的事情,而不是使用 Shell
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/350262.html
