从数组中删除所有文件,包括带有*的文件

时间:2019-05-30 02:17:14

标签: arrays bash ubuntu terminal

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

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

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

这不起作用,带有*的文件不会删除。

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

1 个答案:

答案 0 :(得分:0)

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