用于将文件从源目录移动到目标目录的 Shell 脚本

用于将文件从源目录移动到目标目录的 Shell 脚本

尝试编写 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命令已被注释掉。

相关内容