![](/img/trans.png)
[英]How to remove leading or trailing spaces in files, directories, and subdirectories using bash script?
[英]Bash Script to remove leading and trailing spaces for all files in a directory
我只想將其添加到Automator中,然后讓用戶選擇運行它的目錄。 一驅動器將不會上傳具有空間的文件。 我設法刪除了所有空格,但沒有刪除開頭和結尾的所有空格。
我的代碼:
for f in "$1"/*; do
dir=$(dirname "$f")
file=$(basename "$f")
mv "$f" "${dir}/${file//[^0-9A-Za-z.]}"
done
#!/usr/bin/env bash
shopt -s extglob # Enable extended globbing syntax
for path in "$1"/*; do
file=${path##*/} # Trim directory name
file=${file##+([[:space:]])} # Trim leading spaces
file=${file%%+([[:space:]])} # Trim trailing spaces
if [[ $file != "${path##*/}" ]]; then # Skip files that aren't changed
mv -- "$path" "$1/${file}"
fi
done
筆記:
bash
而不是sh
開頭,以確保擴展名(例如extglobbing和[[ ]]
)可用。 dirname
,因為我們總是知道目錄名稱:它在$1
。 extglob
語法擴展了常規glob表達式,使其具有與正則表達式相當的功能。 +([[:space:]])
是extglob,表示“一個或多個空格”,而${var%%pattern}
和${var##pattern}
從后面或前面刪除盡可能多的與pattern
匹配的字符分別代表變量的值。 mv
,因此我們可以通過首先檢查來進行一些優化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.