我在文件夹中有以下文件:
Peter_XY.tgz Tom_GF.tgz Harry_AB.tgz
我尝试根据两个txt文件将其放在不同的文件夹中,如下所示:
A.txt
AB1
AB
XY
SE
12S
G78
B.txt
OR1
IU345
PIE678
GF
BF
MIL
我尝试将文件放在两个不同的文件夹中:
A
Peter_XY.tgz Harry_AB.tgz
B
Tom_GF.tgz
现在,根据此处建议的代码:Move files from one directory to another based on file names in csv using macOS Terminal
我对代码进行了如下调整:
for file in $(cat A.txt); do mv $file A; done
for file in $(cat B.txt); do mv $file B; done
如何确保代码只在“_”符号之后读取?
1条答案
按热度按时间wrrgggsh1#
下面的脚本将在外部for循环中查找所有名称以
.txt
结尾的文件(变量txtFile
),因此A.txt
和B.txt
将是通过外部循环的独立循环。内部for循环使用您提供的代码来获取
_
之后.tgz
之前的字符。变量为seek
。变量
txtFile
的扩展名为.txt
的basename
用作目标目录。变量DEST
,因此A.txt
变为A
。最后,从其中一个文本文件中找到的任何与文件名匹配的文件都被移动到目标目录中。换句话说,
mv
(移动)*_${seek}.tgz
(任何以_
seek
.tgz
结尾的文件)到$DEST
。以下是您在上面指定的文件的输出:
而结果是这样的: