我正在制作的 bash 脚本的一部分涉及 rar 分割文件,然后在完成后将分割文件移动到另一个目录。
因此,如果我有一个像“test file.txt”这样的文件,它首先会被 rarred 为“[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分钱
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)