将文件名重定向到变量

时间:2017-04-27 20:34:57

标签: shell awk

假设有以下几个文件

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

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

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

2 个答案:

答案 0 :(得分:2)

获取每个文件的数字部分:

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

答案 1 :(得分:0)

这几乎是这个问题的重复。 How to iterate over files in a directory with Bash?

它使用文件名通配符来遍历列表。在您的情况下,您将使用:

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

这是另一种方法,文件名字符串模式是一个变量。 bash: filenames with wildcards in variables 在for循环初始化中展开通配符后,文件名存储在变量文件中(查看接受的答案)。再次使用通配符的功能,您的示例将如下所示:

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