【发布时间】:2012-03-16 10:01:00
【问题描述】:
如何让find 在其exec 参数中应用我的shell 定义的函数和别名?
例如,我定义了一个类似于 bzip2 但使用 7z 的函数:
function 7zip() { for f in $@;做 ls -alF "$f"; 7za a -t7z -m0=lzma -mx=9 -mfb=64 -md=64m -ms=on "$f.7z" "$f" && touch -r "$f" "$f.7z" && rm -fv "$f" && ls -alF "$f.7z";完毕; }
当我发现要压缩超过 7 天的文件时:
find . -mtime +7 -name "G*.html" -execdir 7zip {} +
而不是扩展 7zip 它会出错 Command Not Found。
这一切都在一个 shell 脚本中。
【问题讨论】:
-
总结一些cmets: 1. 在
~/.bashrc中定义和export -f 7zipi2. 使用find ... -exec bash -c "7zipi {}" + -