我正在制作的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中找到一个衬里,我猜测问题是因为文件名称中有括号 - > “[”和“]”
你们有什么想法?
答案 0 :(得分:4)
'['和']'在shell中用于描述字符集。你必须用'\'来逃避它们以获得正确的行为。如果你没有逃脱它们,你告诉我找到't'或'e'或's'或't'的文件:)
要使用参数$ 1执行此操作,您必须使用类似:
的内容param=$(echo $1 | sed 's@\[@\\[@g'| sed 's@\]@\\]@g')
并使用'$ param'代替'$ 1'
我的2美分