FreeBSD перемещает папки из списка

Следует избегать установки переменной PATH. Это используется вашей оболочкой для поиска допустимых команд, установка значения /tmp/не позволит сценарию найти команды rmи cp.

Вы можете добиться желаемого с помощью следующей findкоманды:

find /tmp -not -name '*.csv' -not -path /tmp -exec rm -vr {} \;

Обратите внимание, :это также приведет к удалению всех подкаталогов в /tmp. Если вы этого не хотите, вы должны изменить на:

find /tmp -not -name '*.csv' -type f -exec rm -v {} \;

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

find /tmp -not -name '*.csv' -maxdepth 1 -type f -exec rm -v {} \;

Дополнительное примечание :Я бы никогда не запускал команду find... -exec, которую вы найдете в Интернете, не убедившись, что она сделает то, что вам нужно.Вы должны бежать:

find /tmp -not -name '*.csv' -not -path /tmp

И убедитесь, что он находит только те файлы, которые вам нужны, прежде чем добавлять бит -exec rm -vr {} \;.

0
02.04.2021, 19:04
1 ответ

Приведенный ниже сценарий работает должным образом. Давайте проверим папки ниже

admin@truenas:~/tmp $ ls -la
total 32
drwxr-xr-x  4 admin  admin    6 Apr  2 14:15.
drwxr-xr-x  4 admin  admin   12 Apr  2 14:06..
-rw-r--r--  1 admin  admin   16 Apr  2 14:18 Archive_List_test.txt
drwxr-xr-x  3 admin  admin    3 Apr  2 14:07 Archives
drwxr-xr-x  4 admin  admin    4 Apr  2 14:19 Projects
-rwxr-xr-x  1 admin  admin  130 Apr  2 14:17 script.sh
admin@truenas:~/tmp $ ls -la Archives/PROJECT\ ARCHIVE\ 2020 
total 1
drwxr-xr-x  2 admin  admin  2 Apr  2 14:15.
drwxr-xr-x  3 admin  admin  3 Apr  2 14:07..
admin@truenas:~/tmp $ ls -la Projects/
total 14
drwxr-xr-x  4 admin  admin  4 Apr  2 14:19.
drwxr-xr-x  4 admin  admin  6 Apr  2 14:15..
drwxr-xr-x  2 admin  admin  2 Apr  2 14:19 folder 1
drwxr-xr-x  2 admin  admin  2 Apr  2 14:19 folder 2
admin@truenas:~/tmp $ cat Archive_List_test.txt 
folder 1
folder 2

Этот скрипт перемещает папки, перечисленные в файле Архив _Список _test.txt ,из каталога Projects/ в каталог Archives/PROJECT\ ARCHIVE\ 2020/

admin@truenas:~/tmp $ cat script.sh 
#!/bin/sh
while IFS= read -r file; do 
    mv "Projects/${file}" Archives/PROJECT\ ARCHIVE\ 2020/; 
done <Archive_List_test.txt
admin@truenas:~/tmp $./script.sh 
admin@truenas:~/tmp $ ls -la Projects/
total 13
drwxr-xr-x  2 admin  admin  2 Apr  2 14:30.
drwxr-xr-x  4 admin  admin  6 Apr  2 14:15..
admin@truenas:~/tmp $ ls -la Archives/PROJECT\ ARCHIVE\ 2020 
total 2
drwxr-xr-x  4 admin  admin  4 Apr  2 14:30.
drwxr-xr-x  3 admin  admin  3 Apr  2 14:07..
drwxr-xr-x  2 admin  admin  2 Apr  2 14:19 folder 1
drwxr-xr-x  2 admin  admin  2 Apr  2 14:19 folder 2
0
28.04.2021, 22:54

Теги

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