Find
一起使用 find 和 aspell
我正在嘗試拼寫檢查
*.md
目前目錄中的所有文件,但以下命令失敗:>> find . -maxdepth 1 -name "*.md" | xargs -I {} aspell check {} xargs: aspell: exited with status 255; aborting
我假設這是因為
aspell
需要stdin
與使用者互動並且以某種方式xargs
不提供它。我在 Twitter 上發現了一個 hack,find . -maxdepth 1 -name "*.md" | xargs -n 1 xterm -e aspell check
但這每次都會打開一個新的 xterm。我怎樣才能讓我的原始命令像單獨執行
aspell
我的 find 命令的結果一樣工作?
- 您根本不需要
xargs
,只需使用exec
選項:find . -maxdepth 1 -name "*.md" -exec aspell check {} \;
- 以防萬一您或任何未來的讀者真的需要使用
xargs
- 您可以通過生成新的 shell 並從終端 (/dev/tty
) 獲取標準輸入來做到這一點:find . -maxdepth 1 -name "*.sh" | xargs -n1 sh -c 'aspell check "$@" < /dev/tty' aspell
你總是可以只使用一個簡單的循環:
for f in *.md; do aspell check "$f"; done