bash - 如何替换 GCP Cloud Storage 中文件名中的所有空格?
问题描述
我在 GCP 云存储上有一个存储桶,我想将文件名中包含空格的所有文件重命名为用连字符 (-) 删除空格的名称。
我尝试了类似的东西
gsutil ls gs://<bucket>/<folder_with_the_files_to_rename>/ | sed 's/ /-/g/gsutil mv & \1/'
不幸的是,我无法让 sed 命令工作来替换空格,然后使用 gsutil mv 命令实际重命名文件。
有人能帮我吗?
解决方案
-
如果您需要用您获得的某些文件名中的任何空格替换任何空格gsutil ls gs://<bucket>/<folder_with_the_files_to_rename>/
,您可以使用
gsutil ls gs://<bucket>/<folder_with_the_files_to_rename>/ | \
while read f; do
gsutil -m mv "$f" "${f// /-}";
done;
gsutil mv
命令移动/重命名文件,并且${f// /-}
是一种变量扩展语法,其中每个空格都替换为-
(//
代表所有出现)。因此,您不需要sed
在这里。
推荐阅读
- asp.net-mvc - url 中存在尾随句点时出现 404 错误
- angular - 当默认加载器已经变得更安全时,为什么 PyYAML 5.1 会引发 YAMLLoadWarning?
- ios - 在按钮中的文本两侧添加填充
- forms - Concrete5 商店不允许我输入信用卡详细信息
- github - 分叉和编辑的 GitHub 网站上的页面导航按钮不再起作用
- vbscript - 如何在 vbscript 中引用类型库(通常使用 xshell 库)
- c# - 如何使用 LINQ 选择另一个 IEnumerable 内的 IEnumerable 内的属性?
- database - 一张桌子的物品太少?
- elasticsearch - 从 csv 中提取数据失败
- java - Junit java.lang.AssertionError:JSON 路径“$.reward”