Команда UNIX для перемещения всех файлов и каталогов в определенном каталоге, кроме одного отдельного файла

Я хотел бы переместить все файлы, кроме конкретного, в корзину на Mac из одного каталога.

Вместо того, чтобы перемещать файлы и папки в этом каталоге, я бы хотел, чтобы все файлы и папки были перемещены по отдельности в корзину. Для этого каталога:

~/Desktop/script.sh

~/Desktop/File1

~/Desktop/Folder/File2

Я бы хотел, чтобы script.sh оставался на рабочем столе, но чтобы в каталоге корзины было три элемента, например:

~/.Trash/File1

~/.Trash/Folder

~/.Trash/File2

Я нашел extglob, и для моей задачи я включу и отключу его в моем скрипте. Я использую find, поскольку я хотел бы переместить все каталоги, файлы и файлы в каталогах, а при помещении в корзину я хотел бы, чтобы все файлы и каталоги были автономными. Например, я хотел бы, чтобы файл, находящийся в каталоге, находился за пределами этого каталога.

Это код, который я создал, и у меня нет ошибок.

shopt -s extglob
find ~/Desktop/ \( !('script.sh') \) -print0 |
while IFS= read -r -d '' f;
do mv -- "$f" ~/.Trash ;
done
shopt -u extglob
echo Complete!

Мой вопрос - find правильная команда, которую я могу использовать для этой задачи, и если да, то где я ошибаюсь, поскольку я могу успешно выполнить свою задачу, за исключением сортировки файлов по отдельности, а не в родительских каталогах в корзине.


person joshuatvernon    schedule 06.01.2016    source источник
comment
Какой у Вас вопрос?   -  person Bernhard    schedule 06.01.2016
comment
Что вы получите, если измените mv -- "$f" ~/.Trash на echo "$f"?   -  person user513951    schedule 06.01.2016
comment
find: test: unknown primary or operator - это полученный результат   -  person joshuatvernon    schedule 06.01.2016


Ответы (1)


Измените -print0 на -print и удалите -d '' из вашей read команды.

person user513951    schedule 06.01.2016
comment
Похоже, это не помогло. Я получил эту ошибку find: test: unknown primary or operator - person joshuatvernon; 06.01.2016