我正在制作的 bash 脚本的一部分涉及 rar 拆分文件,然后在完成后将拆分文件移动到另一个目录。
因此,如果我有一个像“test file.txt”这样的文件,它首先会被压缩为“[test] file.txt.part1.rar”、“test file.txt.part2.rar”,然后两者rar 的将被移动到另一个目录。
我的 rar 位工作正常,但我在查找和移动时遇到了问题。
这是我的脚本:
#!/bin/bash
# [...]
rar a -m0 -v104857600b "$1.rar" "$1";
find $folder -name "$1.part*" -exec mv {} $someotherfolder \;
然而它似乎并没有起作用。我已经测试过从 shell 中找到一个衬里,我猜问题是因为文件的名称中有括号 ->“[”和“]”
大家怎么看?
最佳答案
'[' 和 ']' 在 shell 中用来描述字符集。您必须使用“\”转义它们才能获得正确的行为。如果你不逃避他们,你告诉 find 寻找带有 't' 或 'e' 或 's' 或 't' 的文件:)
要用参数 $1 做到这一点,你必须使用类似的东西:
param=$(echo $1 | sed 's@\[@\\[@g'| sed 's@\]@\\]@g')
并使用 '$param' 而不是 '$1'
我的 2 美分
关于Bash 查找并移动名称为 '[ ]' 的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6648112/