Для этого вам просто нужно добавить дополнительный / в конце *вот так:
mv folder/*.jpg destination (match only jpg files)
mv folder/* destination (match anything found)
mv folder/*/ destination (match only the folders)
Это приведет к перемещению только папок внутри "папки" в место назначения, а не файлов внутри "папки" (обратите внимание, что файлы в подпапках перемещаются ).
Попробуйте это,
grep -lr 'required accuracy' rel1 | sed 's#/OUTCAR.txt##g' | xargs -I {} mv {} rel1_fin
-l
Подавление нормального вывода; вместо этого выведите имя каждого входного файла, из которого обычно печатается вывод. Сканирование остановится на первом совпадении Я думаю, это может помочь:
grep -Rl "required accuracy" ./Source-dir/* | grep OUTCAR | xargs -I[] bash -c 'val="[]";scp -r ${val%/*} user@doman:/destination-direcory'
Если в вашем 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
.