python - 在 bash 中更改具有特殊字符的文件名
问题描述
我们正在运行一个 Ubuntu 服务器,该服务器会自动 FTP 来自客户的文件,这些文件最近显示为......'file.csv;' '文件2.csv;
我一直在尝试制定 bash 和 Python 解决方案,但没有运气。我只是想去掉单引号和分号并保留剩下的内容。这不一定是 bash,它可以是 python 甚至 perl。我在下面包含了不起作用的代码。我什至似乎无法获得目录列表。谁能指出我正确的方向?
for i in \'*
do
echo $i
done
注意:更正代码以删除错误的 $echo'
解决方案
find ... -exec rename
像这样使用:
find . -name "*[;']*" -exec rename "tr/';//d" {} \;
例子:
# Create example input files:
$ touch "f'o''o'" "b;a;;r;" "b';a;'';z;'"
# Build the command by first confirming that `find` finds them all:
$ find . -name "*[;']*"
./f'o''o'
./b';a;'';z;'
./b;a;;r;
# Find and rename them, one by one:
$ find . -name "*[;']*" -exec rename "tr/';//d" {} \;
# Confirm that rename worked as expected:
$ ls -1rt | tail -n 3
foo
bar
baz
您还可以使用 进行批量重命名以提高速度xargs
,例如
find ... -print0 | xargs -0 ...
但在你的情况下,我认为一个一个重命名文件已经足够快了。
命令行实用程序rename
有多种形式。他们中的大多数人应该为这项任务工作。我使用了rename
Aristotle Pagaltzis 的 1.601 版本。要安装rename
,只需下载其 Perl 脚本并将其放入$PATH
. 或rename
使用安装conda
,如下所示:
conda install rename
推荐阅读
- android-studio - Android studio 3.5.1(SDK 29.0.3) 导致损坏的 avd root
- xamarin.forms - 有没有办法在桌面上禁用 Xamarin Forms SwipeGestureRecognizer?
- machine-learning - 为什么我收到 ValueError?
- html - 轮播内的卡片垂直显示而不是水平显示
- excel - 已定义和设置变量时 VBA 中的错误 91
- tensorflow-serving - tensorflow serving enable batch, { "error": "第二个输入必须是标量,但它的形状为 [1] }
- progressive-web-apps - indexedDB同时创建多个ObjectStore
- apache-spark - What are the Spark transformations that cause a shuffle on Dataframes?
- javascript - 当一个未处理的被拒绝的承诺抛出它的错误
- python - Python pandas multiIndex 检查索引值