Questions tagged «rename»

重命名标签是指为某些其他操作(例如,远程复制,备份)的一部分为现有文件或文件副本赋予不同名称的操作。对于与(perl)重命名命令有关的问题,也请使用此标记。

2
重命名图像以在名称中包含创建日期
当我查看图像的属性时,可以在“拍摄日期”中看到照片的拍摄日期。当我编辑图像(专有程序)时,此数据丢失。 如何在编辑之前重命名图像文件以包含此日期(最好按ISO格式按名称排序)。
9 rename  images 

2
如何在ls和mv中使用ms-dos样式的通配符?
我有一个来自MS-DOS背景的不幸经历-但至少这使我意识到Linux的功能强大得多。我一直在努力使Linux-Fu达到同等水平,但是使用DOS可以完成几件事,但我不确定如何最轻松地使用Linux 来完成: 重命名多个文件-使用两个通配符 c:\> dir Directory of c:\ file1.txt file2.txt file3.txt file4.txt c:\>rename *.txt *.bak c:\> dir Directory of c:\ file1.bak file2.bak file3.bak file4.bak 我知道我可以find -exec在这里使用,但是有可能使用较短的语法-也许mv带有一些特殊的标志或语法?我猜想关键是第二个 *通配符,因为linux的第一个不应该有问题(即我知道如何选择要使用通配符重命名的文件) 重命名单个文件-使用一个通配符 c:\> dir Directory of c:\ file1.txt c:\>rename file1.txt *.bak c:\> dir Directory of c:\ file1.bak 重命名冗长且笨拙的文件名时,这将特别有用。我以为也许我可以用mv file1.txt $1.bak它最终file1.txt.bak接受,但我不确定您是否可以$1使用shell命令内联引用参数。同样,在此特定情况下,ms-dos如何对*通配符进行盲目化以用作部分文件名的捕获/替换匹配也很方便。 使用通配符过滤目录列表 c:\> dir Directory …


3
“ mkdir foo; svn mv * foo”
我经常想对这个习语做一些变形: $ mkdir 2010 $ svn mv * 2010 当然,我会收到一个错误,因为该组也匹配2010: svn: Cannot copy path '2010' into its own child '2010/2010' 有没有办法替换"svn mv * 2010"做正确的事情的另一种单缸纸?

7
如何清理文件扩展名?
我有一个包含.MP3文件的目录,我想将扩展名更改为.mp3。最简单的方法是什么?我认为有些类似的事情: find /RootPath -type f -iname "*.mp3" -exec mv {} sed s/.*MP3/\1.mp3/ \; ...虽然我知道那是不对的。:)替换不正确,我不确定如何在in中同时使用a mv和sed命令。-execfind 我需要一个bash脚本吗?
9 shell  find  rename 

4
在一行中用2个条件/替换重命名多个文件?
我正在尝试重命名一些图像: IMG_1.JPG IMG_2.JPG IMG_3.JPG 我想,以取代IMG与img和.JPG与.jpg-我知道该怎么做第二部分: $ rename 's/\.JPG$/\.jpg/' *.JPG 我的问题是,我似乎无法这样mv IMG_.JPG做img_.jpg-我知道您可以将多个模式传递给rename,但是我似乎无法使用带有修改后的小写字母值的现有文件名。 我该怎么办?
8 files  rename  replace 

5
使用排序将文件名中的单词按字母顺序排序?
在阅读有关bash中的批量重命名文件的教程并使用sort命令对文件内容进行排序时,我还无法弄清楚如何将两者结合起来。 我有一个目录,该目录的内容使用文件名中的标签进行排序,类似于TagSpaces程序处理事物的方式。创建或下载文件名时,我会在文件名的末尾添加任何我能想到的标签。这是一个例子: Sunrise (2) #wallpaper #4k #googleimages.jpg 现在,我想浏览所有这些文件并重命名它们,以便标签按字母顺序排序,而不会影响标签之前或之后的任何内容(例如,图片的标题或文件扩展名)。因此,以上内容将变为: Sunrise (2) #4k #googleimages #wallpaper.jpg 我该如何完成?我什至不知道如何将文件名而不是其内容传递给类似的命令sort,然后可以将其输出传递给mv。
8 bash  rename  sort 

4
展平文件夹结构
我有这个文件夹结构: ├── foo1 │ ├── bar1.txt │ └── bar2.txt ├── foo2 │ ├── bar3.txt │ └── bar4 with a space.txt └── foo3 └── qux1 ├── bar5.txt └── bar6.txt 我想在每个文件夹级别之间加一个下划线: ├── foo1_bar1.txt ├── foo1_bar2.txt ├── foo2_bar3.txt ├── foo2_bar4 with a space.txt ├── foo3_qux1.bar6.txt └── foo3_qux1_bar5.txt 我四处张望,没有找到任何可行的解决方案,主要是因为我的问题有两个特殊之处:根目录中可能存在多个文件夹级别,而且某些文件可能包含空格。 任何想法如何在bash中完成此操作?谢谢! 编辑:运行格连杰克曼建议答案我得到这个: 一级文件夹有两个下划线。知道如何避免这种情况或只是对其重命名,以便仅使用一个下划线吗?谢谢。

3
根据文本文件重命名文件列表
我有一个文件夹中的文件列表,我想根据文本文件重命名该文件夹。例如: 这些是文件夹中的5个文件。 101_T1.nii 107_T1.nii 109_T1.nii 118_T1.nii 120_T1.nii 我想使用一个包含相同顺序的新文件名列表的文本文件来重命名它们,但不带扩展名.nii: n01 n02 n03 n04 n05 我该怎么做呢?
8 rename 


5
用文件名中的下划线替换点,保留扩展名不变
我有一个bash脚本,我试图替换文件名中的点,并用下划线替换它们,使扩展名保持不变(我在Centos 6 btw上)。从下面的输出中可以看到,该脚本在有一个点要替换的情况下起作用,但是在唯一的点是扩展名的情况下,该脚本仍会尝试重命名该文件,而不是忽略它。谁能指出我应该如何更好地处理这个问题?谢谢你的帮助。 我的(错误的)脚本: #!/bin/bash for THISFILE in * do filename=${THISFILE%\.*} extension=${THISFILE##*\.} newname=${filename//./_} echo "mv $THISFILE ${newname}.${extension}" #mv $THISFILE ${newname}.${extension} done 输入样例: 1.3MN-Pin-Eurotunnel-Stw505.51.024-EGS-130x130.jpg Wear-Plates.jpg 输出: mv 1_3MN-Pin-Eurotunnel-Stw505_51_024-EGS1-130x130.jpg 1_3MN-Pin-Eurotunnel-Stw505_51_024-EGS1-130x130.jpg mv Wear-Plates_jpg.Wear-Plates_jpg Wear-Plates_jpg.Wear-Plates_jpg

2
尝试在Perl重命名工具(Debian)中进行算术运算
假设我有五个mp3文件: 01-trackfoo.mp3 02-trackbar.mp3 03-trackbaz.mp3 04-trackabc.mp3 05-trackxyz.mp3 现在,我快速聆听文件(只需在控制台上的mplayer就能解决问题),然后发现音轨顺序错误。05实际上是02,其余的将不得不重命名。所以首先我将进行临时重命名: 01-trackfoo.mp3 02-trackbar.mp3 03-trackbaz.mp3 04-trackabc.mp3 00-trackxyz.mp3 现在我们需要一个“移位”:02应该变成03,03应该变成04,04应该变成05。为了最大程度地减少混乱,将mv稍后编辑ex-05(现在为00)。 我的方法是这样的:(perl rename,由Larry Wall提供,默认为Debian) rename 's/0([2-4])([\s\S]+)/0($1+1)$2/' * 以及(之后再进行一些RTFM操作) rename 's/0([2-4])([\s\S]+)/0($1+1)$2/e' * 它们都/e[val]不起作用,特别是因为修饰符除了求值以外不接受其他任何东西,并且一旦您尝试将求值与字符串结合起来就会抛出错误。该bash能做到这一点就好了,例如, foo$((1+6))将被评估到foo7。 那么,我该怎么做(首选单行代码,不打算为此编写整个独立脚本)?

7
Linux脚本或程序以缩短文件名
我找不到Linux版本的namemangler并没有取得很大的成功,我需要重命名1000个文件,以便它们在Windows上可读。 有谁知道可以执行此操作的Linux程序? 如果没有,那么脚本可能会起作用,因为我只需要将文件夹中的所有文件重命名为前16个字符。我怀疑脚本路线可能值得一试,但不确定从哪里开始。

4
使用正则表达式(shell脚本)复制/重命名多个文件
我有一组与“ assignment02.cc”,“ assignment02.h”,“ assignment02.txt”等模式匹配的文件。我想将这些文件复制/重命名为“ assignment03.cc”,“ assignment03”。 h”,“ assignment03.txt”等。 我怀疑应该使用Shell脚本并sed来实现。到目前为止,我有: OLD_NO=$1 NEW_NO=$2 echo "Moving from $OLD_NO to $NEW_NO" for name in assignment$OLD_NO.* ; do newname=$(echo $name | sed 's/\(.*\)$OLD_NO\(.*\)/\1xx$NEW_NO\2/') echo "$name -> $newname" # mv -v $name $newname done 不幸的是,我调用sed的方式总是返回输入字符串$name,而实际上并没有进行正则表达式查找/替换。 注意:在Internet上有一个rename具有此功能的命令,但该命令在我的MacBook上不可用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.