【问题标题】:Delete all files from an array, including some with *删除数组中的所有文件,包括带有 * 的文件
【发布时间】:2019-05-30 02:17:14
【问题描述】:

我有一个数组,其中包含要删除的各种文件/文件夹的列表,包括删除文件夹中的所有文件。

server_dir="/srv/data/"
removeLocalFiles=("logs/*.log.gz" "plugins/file.txt" "other.txt")
for serverFile in "${removeLocalFiles[@]}"; do
    rm "$server_dir/$serverFile"
done

数组可以是文件、文件夹,如您所见,是具有特定扩展名的文件。

这不行,带*的文件不会删除。

我可以使用什么来删除特定目录中的所有文件?该列表将完全指向该文件或文件夹,因此不应删除该特定文件以外的任何内容。/

【问题讨论】:

  • 为什么要使用数组,为什么不使用cd "$server_dir" && rm logs/*.log.gz plugins/file.txt other.txt
  • 一次性完成,将所有要删除的文件存储在数组server_dir="/srv/data"; removeLocalFiles=("${server_dir}"/logs/*.log.gz "${server_dir}/plugins/file.txt" "${server_dir}/other.txt")中,并删除为rm -- "${removeLocalFiles[@]}"

标签: arrays bash ubuntu terminal


【解决方案1】:

您可以将其添加到您的行中以测试目录是否不为空。如果字符串不为空 rm 将正常工作。[ ! -z "$(ls -A $server_dir/$serverFile")" ] && rm "$server_dir/$serverFile"

【讨论】:

    猜你喜欢
    • 2014-12-13
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    相关资源
    最近更新 更多