Linux 删除两个字符之间的文件名bash
我在一个目录中有一组文件,如下所示:Linux 删除两个字符之间的文件名bash,linux,bash,sed,Linux,Bash,Sed,我在一个目录中有一组文件,如下所示: Filename - XXXXXXXXXXXXXXXXXXX.mp3 那里有19个X。我需要一个bash脚本或类似的脚本来循环并删除我目录中所有文件的X 我已经浏览了这个站点和其他站点,并看到了使用sed命令的示例,但我个人还没有适应我的具体需要。我为我缺乏信息而道歉,我对这门语言相当陌生,不知道从哪里开始 这是一个python脚本,应该重命名所有文件并删除x 除第一行外,你应该阅读所有以开头的行 #!/usr/bin/env python import
Filename - XXXXXXXXXXXXXXXXXXX.mp3
那里有19个X。我需要一个bash脚本或类似的脚本来循环并删除我目录中所有文件的X
我已经浏览了这个站点和其他站点,并看到了使用sed命令的示例,但我个人还没有适应我的具体需要。我为我缺乏信息而道歉,我对这门语言相当陌生,不知道从哪里开始 这是一个python脚本,应该重命名所有文件并删除x 除第一行外,你应该阅读所有以开头的行
#!/usr/bin/env python
import os
for i in os.listdir("."):
#You can change the number to whatever number of X's you want
x = "X"*19
#If you don't want to get rid of the ' - ', then put a '#' (without quotes) in front of the next line
x = " - "+x
new = i.replace(x, "")
print(os.rename(i,new))
将此文件另存为XXX.py,然后通过执行以下操作授予它正确的权限:
sudo chmod +x XXX.py
然后使用以下命令运行它:
./XXX.py
或者如果您的用户没有正确的权限:
sudo ./XXX.py
如果程序返回错误输出,则:
尝试使用sudo或Try:
sudo python XXX.py
不管有没有sudo。Python的答案可能更可取,因为从web上复制paste bash one行程序是危险的,但现在我们开始: 以下for循环将: 列出所有mp3文件,仅选择扩展名前有19个bug alert:或更多XE的文件 将每个文件回显到屏幕上,但先删除19个连续的X 测试: 对于*xxxxxxxxxxxx.mp3中的文件;doecho$echo${FILE}| sed-E's/X{19}/';完成 此婴儿更改文件名而不是echo: 更改名称: 对于*xxxxxxxxxxxx.mp3中的文件;do mv${FILE}$echo${FILE}| sed-E's/X{19}/';完成 小心使用…您实际上不需要sed。只需使用一个按钮 如果键入Xs真的让你讨厌
printf -v Xs 'X%.0s' {1..19}
for file in *$Xs.mp3; do
mv "$file" "${file//$Xs}"
done
欢迎来到堆栈溢出。请看这一页。为了逼真起见,如果你说有19个X,你的例子应该包括19个X。您希望生成的文件名为Filename-.mp3,还是希望删除空格和破折号以及X?如果有18个或20个X的文件,您希望它们也被更改,还是完全不受影响?…我希望它们被重命名为Filename.mp3这样做从来都不是一个好主意。在这两个示例中,您可以轻松地对*xxxxxxxxxxxxxxxx.mp3中的文件执行以下操作:;谢谢你的评论。你是绝对正确的,我按照你的建议编辑了我的答案,最好不要把我自己的坏习惯传给世界…谢谢,这很有效!谢谢你的介绍。令人惊叹的
printf -v Xs 'X%.0s' {1..19}
for file in *$Xs.mp3; do
mv "$file" "${file//$Xs}"
done