根据 Bash 中的模式重命名目录
Renaming directories based on a pattern in Bash
我有一个 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
您可以这样编写代码以涵盖这两种情况:
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
一个简单的答案是将 *\[*\]\ -\ *
更改为 *\ -\ *
for name in *\ -\ *; do
if [[ -d "$name" ]] && [[ ! -e "${name#* - }" ]]; then
mv "$name" "${name#* - }"
fi
done
我有一个 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
您可以这样编写代码以涵盖这两种情况:
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
一个简单的答案是将 *\[*\]\ -\ *
更改为 *\ -\ *
for name in *\ -\ *; do
if [[ -d "$name" ]] && [[ ! -e "${name#* - }" ]]; then
mv "$name" "${name#* - }"
fi
done