我有大量 .txt 文件,我想加载到数据库中。
这些表与 .txt 文件具有相同的名称,但没有扩展名。
所以我想执行命令
for f in *.txt; do mysql -u root -p -e "LOAD DATA LOCAL INFILE '$f' INTO TABLE $f" -D rn4; done
然而,最后一个$f
让我头疼,因为我希望它只使用名称,而不使用扩展名。
所以对于文件来说piRNA.txt
命令看起来像
mysql -u root -p -e "LOAD DATA LOCAL INFILE 'piRNA.txt' INTO TABLE piRNA" -D rn4
我该怎么做呢?
为了使答案对其他人有用,请不要只给我命令,而请写一两行关于如何在一般情况下提取名称的信息。
答案1
您可以在 shell 脚本中这样做:
f=piRNA.txt
g=${f%.txt}
执行中
echo $f $g
产生以下输出:
piRNA.txt piRNA
使用该%
语法,您可以删除匹配的后缀模式。示例中的后缀模式是.txt
并且f
是从中删除的变量。请注意,模式也可能包含通配符(参见例如bash手册了解详情)。
与往常一样,如果您的文件名可能包含空格,您必须将变量的引用放入双引号中(例如"$f"
等)。