grep "строка из файла" в подкаталогах, затем скопируйте всю "папку"

Для этого вам просто нужно добавить дополнительный / в конце *вот так:

mv folder/*.jpg destination (match only jpg files) 
mv folder/* destination (match anything found)
mv folder/*/ destination  (match only the folders) 

Это приведет к перемещению только папок внутри "папки" в место назначения, а не файлов внутри "папки" (обратите внимание, что файлы в подпапках перемещаются ).

1
24.04.2020, 13:47
3 ответа

Попробуйте это,

 grep -lr 'required accuracy' rel1 | sed 's#/OUTCAR.txt##g' | xargs -I {} mv {} rel1_fin
  • -lПодавление нормального вывода; вместо этого выведите имя каждого входного файла, из которого обычно печатается вывод. Сканирование остановится на первом совпадении
0
19.03.2021, 02:26

Я думаю, это может помочь:

grep -Rl "required accuracy" ./Source-dir/* | grep OUTCAR | xargs -I[] bash -c 'val="[]";scp -r ${val%/*} user@doman:/destination-direcory'
0
19.03.2021, 02:26

Если в вашем findдоступно -execdir:

find. -type f -name "OUTCAR.txt" \
-exec grep -q "required accuracy" {} \;
-execdir scp -r./ "/path/to/final location" \;
  • найти все файлы(-type f)с помощью -name OUTCAR.txt.
  • grepдля «требуемой точности» в этом файле,
  • Если grepуспешно, запустите scp... из каталога, в котором находится файл, используя -execdir.

Обратите внимание, что /path/to/final/locationдолжен быть абсолютным путем, или вы можете использовать $PWD/relative/path/from/where/find/is/executed.

1
19.03.2021, 02:26

Теги

Похожие вопросы