
我正在尋找類似的東西:
ls | ask_yes_no_for_each_file | chmod +x the_files_approved
或類似的語法。
也可以處理您需要單獨確認的其他命令。
答案1
這就是您正在尋找的:
find . -maxdepth 1 -type f -print0 | xargs -L1 -p0 chmod +x
這通常find
不是ls
因為,解析ls
輸出不可靠。然而,這種形式使用find
,可以處理檔案名,即使它們包含換行符或其他困難字元。
解釋
find . -maxdepth 1 -type f -print0
這將選擇文件。這可以使用 find 的許多選項中的任何一個來自訂。此選項
print0
指示find
列印以空分隔的清單中的檔案名稱。這是傳輸檔案名稱清單的唯一可靠方法。xargs -L1 -p0 chmod +x
這將取得由 產生的以空分隔的檔案名稱列表,
find
並將命令套用至它們。
此-L1
選項指示xargs
一次僅處理一個檔案名稱。該-p
選項指示xargs
在繼續之前提示批准。此-0
選項指示xargs
使用空字元作為檔案名稱之間的分隔符號。
[我不知道這個-p
選項,xargs
直到 @kwan 指出。
答案2
您可以使用xargs
。
例如:
ls|xargs -I path -p chmod +x path
選項-p
: 提示使用者是否執行每個命令列並從終端機讀取一行。僅當回應以“y”或“Y”開頭時才運行命令列。