如何使用Bash在扩展名之前创建带有额外后缀的文件副本?
发布时间:2020-12-15 21:51:27 所属栏目:安全 来源:网络整理
导读:这个标题有点令人困惑,所以让我分解一下.基本上我有一个包含各种名称和扩展名的完整文件目录: MainDirectory/ image_1.png foobar.jpeg myFile.txt 对于iPad应用程序,我需要创建这些副本,并在扩展名之前附加到所有这些文件名末尾的后缀@ 2X – 所以我最终得
这个标题有点令人困惑,所以让我分解一下.基本上我有一个包含各种名称和扩展名的完整文件目录:
MainDirectory/ image_1.png foobar.jpeg myFile.txt 对于iPad应用程序,我需要创建这些副本,并在扩展名之前附加到所有这些文件名末尾的后缀@ 2X – 所以我最终得到这个: MainDirectory/ image_1.png image_1@2X.png foobar.jpeg foobar@2X.jpeg myFile.txt myFile@2X.txt 我不是手动一次更改一个文件名,而是想创建一个脚本来为我处理它.我目前有以下内容,但它没有按预期工作: #!/bin/bash FILE_DIR=. #if there is an argument,use that as the files directory. Otherwise,use . if [ $# -eq 1 ] then $FILE_DIR=$1 fi for f in $FILE_DIR/* do echo "Processing $f" filename=$(basename "$fullfile") extension="${filename##*.}" filename="${filename%.*}" newFileName=$(echo -n $filename; echo -n -@2X; echo -n $extension) echo Creating $newFileName cp $f newFileName done exit 0 我也希望将它保持为纯粹的bash,而不是依赖于特定于os的调用.我究竟做错了什么?为了做我需要的,我可以改变什么或代码将起作用? 解决方法#!/bin/sh -e cd "${1-.}" for f in *; do cp "$f" "${f%.*}@2x.${f##*.}" done (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |