因此,在一个bash脚本中,我有以下非常简单的行,但我怎样才能链接它进一步移动文件?在unix中,找到并压缩它后,用xargs移动文件?
find . -type f -ctime -$2 -name "mylog*.log" | xargs bzip2
这工作正常,但我也想将文件移动到一个新的目录,一旦我完成了bzip2。
因此,在一个bash脚本中,我有以下非常简单的行,但我怎样才能链接它进一步移动文件?在unix中,找到并压缩它后,用xargs移动文件?
find . -type f -ctime -$2 -name "mylog*.log" | xargs bzip2
这工作正常,但我也想将文件移动到一个新的目录,一旦我完成了bzip2。
一个标准技巧是使用一个新的脚本,做任何你需要的。在这里,我假定${OTHER_DIRECTORY}
是一个环境变量,表示在哪里放置压缩文件,但是有很多其他(更好的)方法可以将该信息提供给脚本(例如将目录指定为第一个参数)最后一个论点是一个坏主意)。
#!/bin/bash
for file in "[email protected]"
do
bzip2 "$file"
mv "$file.bz2" "${OTHER_DIRECTORY:-/tmp}"
done
然后你可以find
运行该脚本:
find . -type f ctime -$2 -name "mylog*.log" -exec tinyscript.sh {} +
这是非常有效的。如果你只想要一个mv
命令,你可以考虑沿着线的东西:
bzip2 "[email protected]"
bz2=()
for file in "[email protected]"; do bz2+=("$file.bz2") done
mv "${bz3[@]}" "${OTHER_DIRECTORY:-/tmp}"
此代码即使路径名称包含空格和其他不良字符。
一种选择可能是这样的:
find . -type f -ctime -$2 -name "mylog*.log" -exec bzip2 {} \; -exec mv {} /path/to/new_dir/ \;
'mv'会得到旧的文件名并失败,不是吗? –
你好,它似乎没有与MV – user3761584
工作我的意思是附加.bz2后{}确实做到这一招艰难,即使它不完全干净。 – user3761584
谢谢,似乎这样做 – user3761584