Очевидно, вы следуете руководству, написанному для дистрибутивов на основе Debian, попробуйте руководство для дистрибутивов на основе RHEL, например: http: / /distributedbytes.timojo.com/2015/05/how-to-install-neo4j-server-on.html
Примечание: я не тестировал его
$(basename {})
потерпит неудачу (лучше :просто будет пустой строкой ). Подоболочка, вызываемая здесь, не расширяется {}
до имени файла, так как это специфично для поиска и не экспортируется в подоболочку, которую создает ваша команда.
Вы можете проверить это, запустив
find -exec echo "this will be empty:" $(basename '{}') \;
Предлагаю написать небольшой скрипт:
#!/bin/bash
mv "$1" /somefolder/export/"$( basename ${1})"
и запустите его в своей find
команде:
find /dir/ <specs> -exec grep -qiF 'closed' '{}' \; -exec bash script.sh '{}' \;
Насколько я знаю, поведение пересылки '{}'
в подоболочки зависит от вашейfind
-версии.
Если вы хотите сохранить исходную структуру ниже каталога /somefolder/somedir
, вы можете использовать rsync
вместо mv
.
Тестовая установка:
/somefolder/storage/testfileOLD.txt
/somefolder/storage/subdir/fileOLD.txt
Ожидаемый результат после хода:
/somefolder/export/testfileOLD.txt
/somefolder/export/subdir/fileOLD.txt
Команды:
# first, create a file list of relative paths (some arguments removed for simplicity)
$ find /somefolder/storage -type f -name "*OLD*" -printf '%P\n' > /tmp/filelist
# cat to illustrate its content
$ cat /tmp/filelist
subdir/fileOLD.txt
testfileOLD.txt
# then rsync using `--remove-source-files` to move the files
$ rsync -av --remove-source-files --files-from=/tmp/filelist /somefolder/storage /somefolder/export