我有一个Bash脚本,可以很好地重命名符合条件的目录。
for name in *\[*\]\ -\ *; do
if [[ -d "$name" ]] && [[ ! -e "${name#* - }" ]]; then
mv "$name" "${name#* - }"
fi
done
目前,如果目录如下:
user1 [files.sentfrom.com] - Directory-Subject
它重命名目录,只重命名目录
Directory-Subject (this could have different type of text)
如何更改脚本/搜索条件,以便现在搜索
www.ibm.com - Directory-Subject
并重命名目录,只将目录重命名为
Directory-Subject
答案 0 :(得分:0)
您可以这样编写代码,以便涵盖两种情况:
for dir in *\ -\ *; do
[[ -d "$dir" ]] || continue # skip if not a directory
sub="${dir#* - }"
if [[ ! -e "$sub" ]]; then
mv "$dir" "$sub"
fi
done
在运行脚本之前:
$ ls -1d */
user1 [files.sentfrom.com] - Directory-Subject/
www.ibm.com - Directory-Subject
后:
$ ls -1d */
Directory-Subject/
www.ibm.com - Directory-Subject/ # didn't move because directory existed already
答案 1 :(得分:0)