Macos 创建文件时创建目录

Macos 创建文件时创建目录,macos,bash,unix,terminal,Macos,Bash,Unix,Terminal,我是Unix的新手,我正在学习在自动化文件复制等方面运行脚本的功能有多强大。我已经获得了创建初始脚本的帮助(credit where credit's due:),但现在我想知道在复制文件时如何生成特定的目录名。以下是原始脚本: #!/bin/bash file=$1 prefixes=$2 filename=`basename "$file"` while read line do cp $file "$line-$filename" done < $prefixes #/bi

我是Unix的新手,我正在学习在自动化文件复制等方面运行脚本的功能有多强大。我已经获得了创建初始脚本的帮助(credit where credit's due:),但现在我想知道在复制文件时如何生成特定的目录名。以下是原始脚本:

#!/bin/bash
file=$1
prefixes=$2
filename=`basename "$file"`
while read line
do
    cp $file "$line-$filename"
done < $prefixes
#/bin/bash
文件=$1
前缀=$2
filename=`basename“$file”`
读行时
做
cp$文件“$行-$文件名”
已完成<$前缀
我基本上调用脚本,然后让位于同一目录中的文本文件的前缀在生成的新文件的开头附加一个字符串。我想做的是用原始文件名创建一个目录,这样我就可以将所有副本自动放在新文件夹中。我试过这样的方法:

#!/bin/bash
file=$1
prefixes=$2
filename=`basename "$file"`
while read line
do
    mkdir $filename
    cp $file "$filename/$line-$filename"
done < $prefixes
#/bin/bash
文件=$1
前缀=$2
filename=`basename“$file”`
读行时
做
mkdir$filename
cp$file“$filename/$line-$filename”
已完成<$前缀
但这似乎不起作用。不过你会明白我的意图的。我想要一个与原始文件同名的目录,然后将所有新图像复制到该目录中。我在Mac OSX终端中使用的命令是
/copier.sh myimage.jpeg prefixes.txt

如果我只是使用类似于
mkdir test
的东西,我已经获得了创建目录的脚本,但这不会有任何好处,因为每次运行脚本时我都必须进入并更改目录名


如果你有任何问题,请告诉我。很抱歉,如果我犯了一些重大错误,我只是很难找到解决方法。谢谢你的帮助

如果
$filename
位于同一目录中,您将无法创建该目录,因为文件已存在。你可以考虑使用一个不同的名字,比如没有扩展名的文件名。
#!/bin/bash

file=$1
prefixes=$2
filename=${file##*/}  ## Better than using an external binary like basename.
dir=${filename%%.*}  ## Remove extension.

mkdir -p "$dir" || exit 1 ## Only need to create it once so place it outside the loop. And `$dir` might already have been made so use `-p`. This would also make the code exit if `mkdir` fails.

while read -r line  ## Use -r  to read lines in raw form
do
    cp "$file" "$dir/$line-$filename"
done < "$prefixes"
#/bin/bash
文件=$1
前缀=$2
filename=${file##*/}###比使用外部二进制文件(如basename)更好。
dir=${filename%%.*}##删除扩展名。
mkdir-p“$dir”| |退出1###只需要创建一次,因此将其放置在循环之外。而“$dir”可能已经被使用了,所以使用“-p”。如果'mkdir'失败,这也会使代码退出。
在读取-r行时##使用-r读取原始形式的行
做
cp“$file”“$dir/$line-$filename”
已完成<“$前缀”
考虑在
周围正确引用变量