如何以特定格式重命名文件夹中的多个文件?

关联

我在一个文件夹中有很多文件,格式为“{galaxyID}-cutout-HSC-I-{#}-pdr2_wide.fits”,其中 {galaxyID} 和 {#} 是每个文件的不同数字。这里有些例子:

2185-cutout-HSC-I-9330-pdr2_wide.fits
992-cutout-HSC-I-10106-pdr2_wide.fits
2186-cutout-HSC-I-9334-pdr2_wide.fits

我想更改此文件夹中所有文件的格式以匹配以下内容:

2185_HSC-I.fits
992_HSC-I.fits
2186_HSC-I.fits

即,我想从每个文件名中取出“cutout”、第二个数字和“pdr2_wide”。我更愿意在 Perl 或 Python 中执行此操作。对于我的 Perl 脚本,到目前为止我有以下内容:

rename [-n];
    my @parts=split /-/;
    my $this=$parts[0].$parts[1].$parts[2].$parts[3].$parts[4].$parts[5];
    $_ = $parts[0]."_".$parts[2]."_".$parts[3];
    *fits

这给了我错误信息

Not enough arguments for rename at ./rename.sh line 3, near "];" Execution of ./rename.sh aborted due to compilation errors.

我包含了 ,[-n]因为我想在实际操作之前确保更改是我想要的;无论哪种方式,为了安全起见,这是在一个重复的目录中。

布赖恩·德·福伊

看起来你正在使用rename你在 Ubuntu 上得到的(它不是我的 ArchLinux 机器上的那个),但还有其他的。但是,你提出的很奇怪。周围的括号-n不应该在那里,;命令结束。

如果您使用的是我认为的语法,则语法是这样的:

% rename -n -e PERL_EXPR file1 file2 ...

Perl 表达式是-eswitch的参数,可以是一个简单的替换。请注意,此表达式是您提供给 的字符串-e,因此可能需要引用:

% rename -n -e 's/-\d+-pdr2_wide//' *.fits
rename(2185-cutout-HSC-I-9330-pdr2_wide.fits, 2185-cutout-HSC-I.fits)

而且,我不会一步完成,而是分两步完成:

% rename -n -e 's/-cutout-/-/; s/-\d+-pdr2_wide//' *.fits
rename(2185-cutout-HSC-I-9330-pdr2_wide.fits, 2185-HSC-I.fits)

还有其他可能有意义的模式。您可以保留零件,而不是带走零件:

% rename -n -e 's/\A(\d+).*(HSC-I).*/$1-$2.fits/' *.fits
rename(2185-cutout-HSC-I-9330-pdr2_wide.fits, 2185-HSC-I.fits)

我倾向于使用命名捕获,以便下一个可怜的懒汉知道你在做什么:

% rename -n -e 's/\A(?<galaxy>\d+).*(HSC-I).*/$+{galaxy}-$2.fits/' *.fits
rename(2185-cutout-HSC-I-9330-pdr2_wide.fits, 2185-HSC-I.fits)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

重命名文件夹中具有特定名称的所有具有特定格式的文件

如何重命名多个文件夹中的多个文件?

如何将多个文件移动并重命名到特定文件夹?

需要通过 VBScript 重命名特定文件夹中的多个文件

如何使用一个命令重命名多个文件夹中的多个文件

如何以编程方式重命名Google存储中的文件夹?

重命名文件夹中的文件

重命名文件夹中的文件

如何重命名文件夹中的文件名?

如何使用累进编号重命名多个文件夹?

如何在不重命名目录的情况下重命名多个文件夹中的文件?

如何从父文件夹重命名powershell中的多个文件?

如何使用 python 和 pandas 重命名子文件夹中的多个 .Json 文件

重命名多个csv文件夹中的csv列

在文件夹,子文件夹和多个文件中递归查找和重命名

批量重命名文件夹名称中的特定文本

使用特定格式的python重命名文件

如何正确重命名文件夹?

PHP:如何重命名文件夹

如何在Java中重命名文件夹

如何在Linux中递归重命名文件夹

如何在OSX中批量重命名文件夹?

如何在终端中重命名文件夹?

在Python中重命名文件夹

如何使用PowerShell根据每个文件中的特定内容重命名文件夹中的文件?

如何在包含特定文本的文件夹中搜索文件并在Python中重命名该文件

如何批量重命名多个文件夹中的多个文件并将它们合并到一个大文件夹中?

使用 R 中的函数从多个文件夹中复制相同的文件并根据文件夹结构重命名文件

重命名文件夹中的所有文件也重命名子文件夹