将文件名重定向到变量



假设有几个文件,例如以下

CLIENT_1.csv
CLIENT_2.csv
CLIENT_3.csv
CLIENT_4.csv

我们是否可以使用任何壳命令/尴尬将1,2,3,4引导到名为" ID"的变量中?这样我们就可以做以下

if [ ${ID} != 4 ]
then
blah blah blah
fi

获取每个文件的编号部分:

for file in CLIENT_*.csv ; do
    id=${file%.csv}         # remove trailing '.csv'
    id=${id#CLIENT_}        # remove leading 'CLIENT_'
    if [ "$id" != 4 ] ; then ... ; fi
done

这几乎是这个问题的重复。如何使用bash在目录中迭代文件?

它使用fileName通配符在列表中迭代。在您的情况下,您将使用:

for filename in /mydirectory/CLIENT_*.csv; do
   #whatever you wanted to do
done

这是文件名字符串模式是变量的另一种方法。bash:变量中的通配符的文件名文件名存储在变量文件(查看接受的答案(中,在为循环初始化扩展了通配符之后。再次使用通配符的力量,看起来像这样:

putfile=CLIENT_*.csv
for file in $putfile; do #whatever you wanted to do
done

最新更新