использовать только имя файла для перемещения

Очевидно, вы следуете руководству, написанному для дистрибутивов на основе Debian, попробуйте руководство для дистрибутивов на основе RHEL, например: http: / /distributedbytes.timojo.com/2015/05/how-to-install-neo4j-server-on.html

Примечание: я не тестировал его

0
05.06.2019, 15:27
2 ответа

$(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-версии.

0
28.01.2020, 03:36

Если вы хотите сохранить исходную структуру ниже каталога /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
0
28.01.2020, 03:36

Теги

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