我想将所有.txt
扩展名文件从copy_loc
目录复制到扩展名为past_loc
的{{1}}目录。
我不想移动文件,只需复制扩展名为.hml
的新位置即可。
.hml
问题:所有past_loc="/Users/Desktop/newdir"
copy_loc="/Users/Desktop/*.txt"
for file in $copy_loc; do
scp "$file" "$(basename "$file" .txt).hml"
done
文件都复制到我运行此脚本的目录中,而不是.hml
目录中。
答案 0 :(得分:1)
您可以使用类似以下的内容:
for file in $copy_loc;
do
filename=$(basename -- "$file" .txt)
cp "$file" "$past_loc"/"$filename".hml
done
还请注意,由于您没有复制到远程计算机,因此应该使用cp
而不是scp
答案 1 :(得分:1)
我将使用参数扩展来执行此操作。嘿,也许是一个数组。 :)
#!/usr/bin/env bash
sources=( /path/to/*.txt )
for file in "${sources[@]}"; do
cp "$file" "/path/to/target/${file%.txt}.htm"
done
参数扩展允许您避免在命令替换中通过管道运行文本。重量更轻。
请注意,scp
是 s y c o p y。在同一个文件系统之间进行复制时,您不需要这样做。