所以在bashscript中我有以下非常简单的一行,但是如何将其进一步链接以移动文件?
find . -type f -ctime -$2 -name "mylog*.log" | xargs bzip2
这很好用,但我也想在完成bzip2后将文件移动到新目录。
答案 0 :(得分:1)
一个选项可能是这样的:
find . -type f -ctime -$2 -name "mylog*.log" -exec bzip2 {} \; -exec mv {} /path/to/new_dir/ \;
答案 1 :(得分:1)
一个标准技巧是使用一个可以满足您需求的新脚本。在这里,我假设${OTHER_DIRECTORY}
是一个环境变量,说明放置压缩文件的位置,但是有很多其他(更好的!)方法可以将这些信息提供给脚本(例如将目录指定为第一个参数 - 作为最后一个参数是一个坏主意。)
#!/bin/bash
for file in "$@"
do
bzip2 "$file"
mv "$file.bz2" "${OTHER_DIRECTORY:-/tmp}"
done
然后使用find
运行该脚本:
find . -type f ctime -$2 -name "mylog*.log" -exec tinyscript.sh {} +
这非常有效。如果您只需要一个mv
命令,则可以考虑以下内容:
bzip2 "$@"
bz2=()
for file in "$@"; do bz2+=( "$file.bz2" ) done
mv "${bz3[@]}" "${OTHER_DIRECTORY:-/tmp}"
即使路径名包含空格和其他不良字符,此代码仍然有效。