Abd*_*han 12 command-line bash
我在目录中有一些文件,如下所示。
source_dir:
ABCD.HRA.0014.2.200.png
ABCD.HRA.0015.2.200.png
ABCD.HRA.0016.2.200.png
MMNP.HRA.0016.2.200.png
Run Code Online (Sandbox Code Playgroud)
我还有一个包含以下内容的文本文件。
text.txt:
ABCD.HRA.0014
ABCD.HRA.0015
Run Code Online (Sandbox Code Playgroud)
现在有什么方法可以按照text.txt
. 之后command
,source dir
并且dest_dir
应该如下。
source_dir:
ABCD.HRA.0016.2.200.png
MMNP.HRA.0016.2.200.png
dest_dir:
ABCD.HRA.0014.2.200.png
ABCD.HRA.0015.2.200.png
Run Code Online (Sandbox Code Playgroud)
bac*_*c0n 13
grep -f
允许您使用 text.txt 作为模式的来源。
#!/bin/bash
for i in source_dir/*.png; do
if grep -Fq -f text.txt <<< "$i"; then
mv -t dest_dir "$i"
fi
done
Run Code Online (Sandbox Code Playgroud)
$ ls
dest_dir script.sh source_dir text.txt
Run Code Online (Sandbox Code Playgroud)
grep选项:
-F
将模式解释为固定字符串,而不是正则表达式。-q
不要向标准输出写入任何内容。-f
从 FILE 获取模式,每行一个。这里的字符串:
<<<
这里文档的一个变体,在发送字符串之前进行变量扩展。MV选项:
-t
将所有源参数移动到-t
目录中。Fel*_*xJN 10
您的文件似乎都以 . 结尾.2.200.png
,因此我们只能使用输入文件:
while read line ; do
mv "source_dir/${line}.2.200.png" destination_dir/
done < text.txt
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5536 次 |
最近记录: |