在我的一个Bash脚本中,我重复了两次这样的代码:
find "$source_dir" -type f \
-iname "*.arw" \
-or -iname "*.cr2" \
-or -iname "*.crw" \
-or -iname "*.jpeg" \
-or -iname "*.jpg" \
-or -iname "*.nef" \
-or -iname "*.nrw" \
-or -iname "*.orf" \
-or -iname "*.pef" \
-or -iname "*.png" \
-or -iname "*.ptx" \
-or -iname "*.raf" \
-or -iname "*.raw" \
-or -iname "*.rw2" \
-or -iname "*.sr2" \
-or -iname "*.srf" \
-or -iname "*.srw" \
-or -iname "*.tif" \
-or -iname "*.tiff" \
-or -iname "*.x3f" | (
counter=0
while read image_file; do
(...)
有两个这样的find
命令都在不同的目录上执行,但具有完全相同的参数。每个发现的结果以不同的方式处理。我确信在这里可以避免代码重复。有没有办法将此find
命令包装到一个函数中,该函数将查找结果存储在某些数据结构中?必须将此类数据结构传递给遍历其项目的子shell。我怎样才能做到这一点?
答案 0 :(得分:2)
将find命令包装为函数
function myfind() {
find ....
}
然后使用它就像是一个新命令
myfind | while read image_file; do ....