Как удалить все файлы в определенной папке, присутствующие в подкаталогах текущего каталога, за исключением определенного файла?

Также есть zentyal (ранее называемый ebox), а Ubuntu Server Guide теперь рекомендует puppet:

https://help.ubuntu.com/stable/serverguide/remote-administration.html

1
задан 9 June 2016 в 10:05

2 ответа

Создайте файл .py, отредактируйте путь (каталог, который вы будете работать), и скомпилируйте его (python3).

код: удалите все файлы в 'path' кроме 'target_file' внутри 'target_folder ', которые просто ясны (пусты).
import os, sys
path='/home/vitor/Desktop/teste/'
target_folder='migrations'
target_file='__init__.py'

for directory, subdirs, files in os.walk(path):
    for file_name in files:
        folder_name=os.path.split(os.path.abspath(directory))[-1]
        if(folder_name==target_folder and file_name==target_file):
            open(directory+'/'+file_name, 'w').close()
        else:
            os.remove(directory+'/'+file_name)
2
ответ дан 23 May 2018 в 10:11
  • 1
    Спасибо за предложение, но я хотел бы иметь решение командной строки. У меня уже есть скрипт в python, который выполняет эту функцию, я поддержал ваш ответ. Спасибо за ваши усилия. gist.github.com/MichaelPavlov/a1394fca9a4a0228a2dcc12427121f5a – Михаил Павлов 9 June 2016 в 08:36
  • 2
    @ МихаилПавлов просто вызывают скрипт из командной строки? Вы даже можете передать аргументы командной строки в качестве целевой папки и целевого файла. – Ajasja 9 June 2016 в 14:15

Вот более простая команда. Я знаю, что кто-то уже ответил на вопрос, но эти команды должны быть проще и уникальнее. Попробуйте их посмотреть, будут ли они работать.

Чтобы удалить каждую подпапку и файл, кроме __init__.py, и отобразит, какие файлы были удалены, попробуйте выполнить следующие команды:

rm -rfv ./*/migrations/!(__init__.py)

пустой файл, просто добавьте следующую команду:

> ./*/migrations/__init__.py

Вышеприведенная команда аналогична написанию пустых данных в файл следующим образом:

/dev/null > ./*/migrations/__init__.py

Примечание [ ! d4]

Все эти команды выполняются из текущего каталога .

Предосторожности

Пожалуйста, сделайте резервную копию, прежде чем пытаться выполнить какую-либо из команд. Никто не на 100% совершенен в этом мире.

0
ответ дан 23 May 2018 в 10:11
  • 1
    Ваша первая команда почти наверняка использует расширенный глобус. Zsh? – muru 9 June 2016 в 17:00

Другие вопросы по тегам:

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