更改所有文件的扩展目录中的OSX(Changing file extensions for all

2019-07-19 22:23发布

我有一个目录满了一个扩展文件(.txt在这种情况下),我想自动转换到另一个分机(.MD)文件。

有一个简单的终端一个衬垫,我可以使用所有文件的转换在此目录中的文件扩展名不同?

或者我需要写一个正则表达式的脚本?

Answer 1:

你可以使用这样的事情:

for old in *.txt; do mv $old `basename $old .txt`.md; done

先构建一个备份!



Answer 2:

或者,你可以安装在ren (重命名)实用程序

brew install ren

ren '*.txt' '#1.md'

如果要重命名的文件名前缀或后缀的文件

ren 'prefix_*.txt' 'prefix_#1.md'


Answer 3:

终端是没有必要为这个...只要突出显示所有要重命名的文件。 右键单击并选择“重命名##条”,并只需键入“.TXT”进入到‘查找’对话框和“.MD”变成了‘替换为’框。



Answer 4:

首选Unix的方式做到这一点(是的,OS X是基于UNIX)是:

ls | sed 's/^\(.*\)\.txt$/mv "\1.txt" "\1.md"/' | sh

为什么有循环for ,如果ls设计遍历文件名的整个名单? 你得管,使用它们。 您可以使用命令创建/修改,不仅输出,而且还命令(的权利,这是一个命令,这是布赖恩Kernighan的,UNIX的发明者之一,最喜欢在Unix上创建的命令),所以让我们来看看什么的lssed通过去除管产生sh

$ ls | sed 's/^\(.*\)\.txt$/mv "\1.txt" "\1.md"/'
mv "firstfile.txt" "firstfile.md"
mv "second file.txt" "second file.md"
$

正如你所看到的,它不仅是一个内胆,而是一个完整的脚本,其中还通过创建另一个脚本输出工作。 所以让我们只给由一个班轮脚本生成的脚本sh ,这是OS X. 脚本解释当然它的作品甚至在它空格的文件名。

BTW:每次你在终端创建脚本的东西,哪怕是只像一个字一个命令lsdate等等一切都在Unix shell中运行始终是一个脚本/程序,这只是一些ASCII-基于数据流(这种情况下的指令流而不是一个数据流)。

要看到实际的命令被执行sh ,只需添加一个-x后选择sh ,果然在壳调试输出,所以你会看到每一个mv由实际传入参数执行命令sed编辑器脚本(是的,在脚本中另一个脚本:-))。

但是,如果你喜欢复杂性,你甚至可以用awk ,如果你喜欢安装其他程序只是做基础工作,有ren 。 我知道,连人谁宁愿写50行左右perl脚本,这个简单的每一天的任务。

也许这是取景器中重命名文件更容易,但如果远程连接到Mac(例如,通过ssh ),使用取景器是根本不可能的。 这就是为什么CMD线仍然是非常有用的。



Answer 5:

基于上述选择,最准确的答案,以下是一个可重复使用bash函数:

function change_all_extensions() {
    for old in *."$1"; do mv $old `basename $old ."$1"`."$2"; done
}

用法:

$ change_all_extensions txt md

(我无法弄清楚如何获得干净的代码格式在这个问题的答案评论。)



Answer 6:

无需编写脚本,针对它只是打这个命令

find ./ -name "*.txt" | xargs -I '{}' basename '{}' | sed 's/\.txt//' | xargs -I '{}' mv '{}.txt'  '{}.md'


Answer 7:

我曾在那里文件被命名为类似的问题.gifx.gif末,这曾在OS X中删除最后.gif

for old in *.gifx.gif; do
    mv $(echo "$old") $(echo "$old" | sed 's/x.gif//');
done


Answer 8:

    cd $YOUR_DIR
    ls *.txt > abc
    mkdir target // say i want to move it to another directory target in this case
    while read line
    do 
    file=$(echo $line |awk -F. '{ print $1 }')
    cp $line target/$file.md  // depends if u want  to move(mv) or copy(cp)
    done < abc


Answer 9:

对于那些你们谁是不是在节目真的很不错,你可以看看这篇文章维基怎样 。
它显示了这样做的许多方法,不涉及编码
你还可以检查出我这篇文章改变文件扩展名 。
它包含一个控制台应用程序,做所有的东西给你。



文章来源: Changing file extensions for all files in a directory OSX