尝试编写 shell 脚本将源位置中存在的所有 .csv 文件移动到目标位置。条件是仅应移动那些具有相应 .txt 文件的 .csv 文件。
示例:source:/home/source 有 abc.csv,abc.txt,def.csv,def.txt,efg.csv 因此根据条件只有 abc.csv,def.csv 应移动到目标目录并作为 efg.csv没有相应的 efg.txt 文件,因此不应将其移动到目标目录。
答案1
循环遍历csv
文件并测试是否存在具有txt
相同文件名主干的文件。如果有,则移动该csv
文件。
sourcedir=/some/dir
destdir=/some/other/dir
for csvfile in "$sourcedir"/*.csv; do
txtfile="${csvfile%.csv}.txt"
if [ -e "$txtfile" ]; then
printf 'Will move %s to %s\n' "$csvfile" "$destdir"
# mv -i "$csvfile" "$destdir"
fi
done
参数扩展${csvfile%.csv}.txt
将去掉.csv
当前文件名的末尾$csvfile
并将其替换为.txt
.
为了安全起见,该mv
命令已被注释掉。