Articles of 批量重命名

如何在Linux中将包含下划线的所有文件和文件夹重命名为连字符

我想重命名名称中包含下划线的所有文件和文件夹,并用连字符replace下划线。 目前我正在使用以下代码, rename '_' '-' */*/* 它正在工作,但现在它显示我“参数列表太长”

在Linux中删除10个字符的文件名

我刚刚从服务器上下载了大约600个文件,需要从文件名中删除最后的11个字符(不包括扩展名)。 我使用Ubuntu,我正在寻找一个命令来实现这一点。 一些例子如下: aarondyne_kh2_13thstruggle_or_1250556383.mus应改名为aarondyne_kh2_13thstruggle_or.mus aarondyne_kh2_darknessofunknow_1250556659.mp3应改名为aarondyne_kh2_darknessofunknow.mp3 我这样做后,似乎有一些重复可能存在,但如果命令未能完成,并告诉我重复将是什么,我总是可以手动删除这些重复。

在Unix中用当前date批量重命名文件作为后缀

我正在尝试使用date后缀批量重命名当前文件夹中的所有文件: rename 's/(.*)/$1_$(date +%F)/' * 但是该命令将info.txt重命名为info.txt_1000 4 24 27 30 46 113 128 1000date +%F) 。 我想要的结果是info.txt_2016-10-13

批量重命名pdf文件,其名称来自其在linux内容的特定行

我有多个我想重命名的pdf文件。 新的名称应该从pdf的文件内容在具体(让说5)线。 例如,如果文件的第5行有内容的some string < – 这个string应该是文件的名称。 同样的事情去其余的文件。 每个文件应该用内容的第5行重命名。 我在terminal试了这个 for pdf in *.pdf do filename=`basename -s .pdf "${pdf}"` newname=`awk 'NR==5' "${filename}.pdf"` mv "${pdf}" "${newname}" done 它复制文件,但名称是无效的string。 我知道系统没有看到纯文本和图像的文件,有元数据,XML标签等..但有办法从该行取内容?

Windowsbatch file在文件名中匹配前缀和后缀

在一个Windowsbatch file中,如果以这种方式命名文件,是否可以提取somestring : prefix_somestring.txt somestring_suffix.txt 假设下划线_分隔前缀或后缀。 上下文是遍历文件夹中的所有文件,并为每个文件返回somestring 。

Bashrecursion地replace名字上的许多空格

任何人都可以推荐一个安全的解决scheme,从给定的根目录开始recursion地replace文件和目录名下划线的空格? 例如, $树 。 | – 一个dir | ` – 文件与spaces.txt ` – b dir | – 带有spaces.txt的另一个文件 ` – 另一个文件与spaces.pdf 变为: $树 。 | – a_dir | ` – file_with_spaces.txt ` – b_dir | – another_file_with_spaces.txt ` – yet_another_file_with_spaces.pdf 我已经复制了另一个用户的问题,这是主要问题,但我需要添加另一个问题: 我正在使用下面的解决scheme: $ find -depth -name '* *' -execdir rename " " "_" {} +; […]

批量使用不同的扩展名重命名多个文件Linux脚本?

我想编写一个linux脚本,将所有这些文件的文件名(但扩展名不同)的所有文件移动或复制到一个新的文件名,同时保持不同的扩展名。 换一种说法: 如果我从一个目录列表开始: file1.txt, file1.jpg, file1.doc, file12.txt, file12.jpg, file12.doc 我想编写一个脚本来更改所有文件名而不更改扩展名。 对于同样的例子,selectfile2作为新文件名的结果是: file2.txt, file2.jpg and file2.doc, file12.txt, file12.jpg, file12.doc 所以文件名不符合当前标准的文件将不会被修改。 最好的祝愿, 乔治

使用BASH中的特殊字符从文件名中删除子string

我有我的目录中的文件列表: opencv_calib3d.so2410.so opencv_contrib.so2410.so opencv_core.so2410.so opencv_features2d.so2410.so opencv_flann.so2410.so opencv_highgui.so2410.so opencv_imgproc.so2410.so opencv_legacy.so2410.so opencv_ml.so2410.so opencv_objdetect.so2410.so opencv_ocl.so2410.so opencv_photo.so2410.so 他们是批量重命名的一系列错误的产物,现在我不知道如何从每个中删除中间的“.so”。 例如: opencv_ocl.so2410.so应该是opencv_ocl2410.so 这是我试过的: # attempt 1, replace the (first) occurrence of `.so` from the filename for f in opencv_*; do mv "$f" "${f#.so}"; done # attempt 2, escape the dot for f in opencv_*; do mv "$f" "${f#\.so}"; done # attempt […]

在bash脚本中获取grandparent目录 – 重命名文件path中的目录

我有以下脚本,当我得到一堆需要重命名为包含它们的目录名称的文件时,通常会使用它。 现在的问题是我需要将文件重命名为两个级别的目录。 我怎样才能得到祖父母的名录,使其工作? 随着以下我得到像这个例子的错误:“mv:不能移动./48711/zoom/zoom.jpg到./48711/zoom/./48711/zoom.jpg :没有这样的文件或目录”。 这在CentOS 5.6上运行。 我想要最终的文件被命名为:48711.jpg #!/bin/bash function dirnametofilename() { for f in $*; do bn=$(basename "$f") ext="${bn##*.}" filepath=$(dirname "$f") dirname=$(basename "$filepath") mv "$f" "$filepath/$dirname.$ext" done } export -f dirnametofilename find . -name "*.jpg" -exec bash -c 'dirnametofilename "{}"' \; find .

通过删除linux中的url参数来重命名文件

我用wget下载了一些文件,文件格式如下: test.zip?AWSAccesskeyId=XXXXXXX&Expires=00000000&Signature=ZZZZZZZZZZ 有什么办法,通过删除URL参数来正确地重命名这些文件。 还有什么办法,从wget下载这样的文件,使用正确的名称(没有URL参数)。 我用下面的命令用mmv试了mmv : mmv "*.zip*" "#1.zip" 但是我找不到任何方法来安装mmv 。 我正在使用CentOS 6.所以,除了这个之外,请提出任何build议。