我有多种格式的文件
a file (www.something.com)
我想以递归方式删除(www.something.com)
。我希望
rename 's/\(*\)//' a\ file\ \(www.something.com\)
应该做的工作,但事实并非如此!为什么?然后我想像这样递归地做那个
find . -name '*\(*\)' -exec bash -c 'mv $0 ${0/\(*\)/}' {} \;
答案 0 :(得分:2)
你需要说:
rename 's/\(.*\)//' filename
您需要在.
之前添加*
。
答案 1 :(得分:1)
这应该有效:
s='a file (www.something.com)'
touch "$s"
ls "a file"*
a file (www.something.com)
# renane command
rename 's/ [^ ]*$//' "$s"
ls "a file"*
a file
使用find:
使其递归find . -name '*\(*\)' -exec rename 's/ [^ ]*$//' '{}' \;
或者不使用重命名:
find . -name '*\(*\)' -exec bash -c 'mv "$1" "$(sed "s/ [^ ]*$//"<<<"$1")"' - '{}' \;