Bash Extglob-移动不在模式中的所有文件,但保留特定的文件

Bash Extglob-移动不在模式中的所有文件,但保留特定的文件,bash,extglob,Bash,Extglob,假设我有一个名为/folder1/的文件夹,其中包含以下文件: file.txt log-2018-01-22.log log-2018-01-21.log log-2018-01-20.log 我想移动到/folder2/所有非.log文件的当前日期,除了文件.txt。由于今天是2018-01-22(在我的时区),我只想在/folder1中保留log-2018-01-22.log和file.txt 我正在使用的脚本(如下所示)没有像我打算的那样将file.txt保存在/folder1/中,而

假设我有一个名为/folder1/的文件夹,其中包含以下文件:

file.txt
log-2018-01-22.log
log-2018-01-21.log
log-2018-01-20.log
我想移动到
/folder2/
所有非
.log
文件的当前日期,除了
文件.txt
。由于今天是
2018-01-22
(在我的时区),我只想在
/folder1
中保留
log-2018-01-22.log
file.txt

我正在使用的脚本(如下所示)没有像我打算的那样将
file.txt保存在
/folder1/
中,而是将其视为不是
.log
的文件之一,记录当前日期并将其移动到
/folder2/

shopt -s extglob
currentDate=$(date +"%Y-%m-%d")
mv /folder1/!(*$currentDate.log) /folder2/
中有什么我可以更改的吗!($d.log)
part使命令忽略
file.txt

我建议:

mv /folder1/!(log-$currentDate.log|file.txt) /folder2/
我建议:

mv /folder1/!(log-$currentDate.log|file.txt) /folder2/

您在帖子中写道:希望移动到/folder2/所有不是当前日期的.log文件,但文件除外。txt@JMCalil你认为我已经插入了<代码> Log-< /代码>吗?这对我来说是有效的:<代码> MKDIR TestDIR;cd testdir;touch file.txt log-2018-01-22.log log-2018-01-21.log log-2018-01-20.log;shopt-s extglob;回声!(log-$currentDate.log | file.txt)
。输出:
log-2018-01-20.log-log-2018-01-21.log
您在帖子中写道:要移动到/folder2/除文件之外的所有文件,这些文件不是当前日期的.log。txt@JMCalil你认为我已经插入了<代码> Log-< /代码>吗?这对我来说是有效的:<代码> MKDIR TestDIR;cd testdir;touch file.txt log-2018-01-22.log log-2018-01-21.log log-2018-01-20.log;shopt-s extglob;回声!(log-$currentDate.log | file.txt)。输出:
log-2018-01-20.log-log-2018-01-21.log