Bir dizini hedef olarak ve aşağıdakilerle grep
birlikte -R
bir girdi kalıpları dosyası olarak iletebilirsiniz -f
:
-f FILE, --file=FILE
Obtain patterns from FILE, one per line. If this option is used
multiple times or is combined with the -e (--regexp) option,
search for all patterns given. The empty file contains zero
patterns, and therefore matches nothing.
-R, --dereference-recursive
Read all files under each directory, recursively. Follow all
symbolic links, unlike -r.
Yani, sen aradığın:
grep -Ff subset.txt -r objects/
Eşleşen dosyaların listesini aşağıdakilerle alabilirsiniz:
grep -Flf subset.txt -r objects/
Son listeniz çok uzun değilse, şunları yapabilirsiniz:
mv $(grep -Flf subset.txt -r objects/) new_dir/
Bu bir argument list too long
hata döndürürse şunu kullanın:
grep -Flf subset.txt -r objects/ | xargs -I{} mv {} bar/
Dosya adlarınızda boşluk veya başka garip karakterler varsa (GNU varsayarak grep
) kullanın :
grep -FZlf subset.txt -r objects/ | xargs -0I{} mv {} bar/
Son olarak, ikili dosyaları hariç tutmak istiyorsanız, şunu kullanın:
grep -IFZlf subset.txt -r objects/ | xargs -0I{} mv {} bar/
"$(subset.txt)"
Komuta neden böyle koydun ? Bu, kablonuzu yürütecek komut ikamesi (bir komut veya komut dosyası gibi).subset.txt