Ошибка, импортирующая lxml Python пакета в Ubuntu

Предположим, что у вас есть одна директория , в которую вы хотите переместить файлы из .

Можно использовать:

$ mv <source folder/*.jpg <destination folder/>

Редактирование:

Нижеприведенный скрипт находит все файлы, соответствующие критериям поиска, определенным в file_screen, а затем выполняет цикл , в то время как выполняет цикл для перемещения выбранных файлов.

Новые каталоги создаются на основе модульных критериев: цикл итераций mod files_in_each. Если мод возвращает ноль, то создается новый каталог и файлы в него перемещаются.

Параметры для подстройки в ваших циклах:

files_in_each=3000  # controls how many files are placed in each directory
directory_to_move="/home/shadowe/test1/test2" # where are the files located
file_screen="jpg"   # only move files that match this criteria

Пожалуйста, подстраивайте по мере необходимости.

#!/bin/bash

# basic definitions and calculations
files_in_each=3000
directory_to_move="/home/shadowe/test1/test2"
file_screen="jpg"
folders_created=0
i=0

# while loop through all of the files that match screening criteria
find $directory_to_move/* -maxdepth 1 -type f -name "*${file_screen}" -print0 | sort -n | while IFS= read -r -d '' file; 
do
    # modulo control for creating directories every files in each completion
    create_dir=`expr $i % $files_in_each`
    if [ $create_dir -eq "0" ]
    then
            new_folder=folder$folders_created
            mkdir $new_folder
            echo "created new folder: " $new_folder
            folders_created=$[$folders_created+1]
    fi
    mv "$file" $new_folder
    i=$[$i+1]
done

Маленький пример результатов после выполнения:

$ ls test2/
not a picture.txt
$ ls folder0/
one.jpg      one*two.jpg       picture 1.jpg  two-one.jpg
one-two.jpg  picture 1111.jpg  picture *.jpg  two three.jpg

Большой пример результатов:

$ ls folder0 | wc -l
3000
$ ls folder1 | wc -l
2008
$ ls test2 | wc -l
7501
$ ls test2/ | grep "jpg"
$

Скрипт для генерации тестовых файлов:

#!/bin/bash

mkdir test2
touch test2/one.jpg
touch test2/'one-two.jpg'
touch test2/'one*two.jpg'
touch test2/'two-one.jpg'
touch test2/'two three.jpg'
touch test2/'picture 1.jpg'
touch test2/'picture *.jpg'
touch test2/'picture 1111.jpg'
touch test2/'not a picture.txt'
#for large test sample uncomment below
#for i in `seq 1 7500`; do touch test2/test$i.txt; done
#for j in `seq 1 5000`; do touch test2/picture$j.jpg; done
1
29.04.2019, 15:11
1 ответ

Если вы хотите знать размер устройства (в байтах), вы можете использовать blockdev:

# blockdev --getsize64 /dev/sde
2000398934016

В этом примере /dev/sde - это 2TB диск, или, по крайней мере, это то, что видит ядро. Естественно, fdisk , parted и другие должны показывать одну и ту же информацию.

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

Некоторые люди любят оставлять небольшое несмежное пространство (несколько мег) в конце диска, так как сменный диск может не иметь точно такого же размера, как ваш старый, и может усложнить такие вещи, как raid члена замены, если новое устройство кажется немного слишком маленьким.

-121--123264-

Это почти наверняка реализуется самой программой, и, вероятно, для ОС невозможно заставить все, кроме самых элементарных программ.

Если, однако, вы знаете, способ программа решает, что она уже запущена, и это то, на что вы можете повлиять, то вы действительно можете получить исполняемый файл для запуска нового процесса (или нет).

Некоторые приложения делают это особенно простым, например Emacs. Стандартным способом запуска Emacs является запуск нового процесса для каждого вызова. Но вы также можете явно запустить Emacs в режиме сервера, а затем запустить emacsclient явно, чтобы сообщить существующему серверу посетить новый файл.

В качестве противоположного примера Firefox предлагает параметр командной строки -no-remote , который принудительно запускает новый процесс, тогда как по умолчанию он должен взаимодействовать с уже запущенным процессом, если это возможно.

Многие простые домашние приложения проверят, работает ли уже другая версия, просто запросив ps . Это можно обойти различными способами. Проблема промышленного программного обеспечения заключается в том, что пользователь почти никогда не знает, как конкретное приложение решает, используется ли оно или нет. Даже в Unix, где можно проверить все открытые файлы, с которыми взаимодействует исполняемый файл, нет никакой гарантии, что вы сможете выяснить, какой из них (если какой-либо из них) отвечает за запись того факта, что приложение работает.

-121--210059-

Python может быть скомпилирован в двух различных режимах ; UCS2 или UCS4 - см. Как узнать, скомпилирован ли Python с UCS-2 или UCS-4? вопрос в Stackoverflow. Все двоичные пакеты (например, lxml) должны быть скомпилированы в том же режиме, в котором был скомпилирован Python. Похоже, lxml был скомпилирован в режиме UCS4, а Python - в режиме UCS2. Необходимо перекомпилировать один из них, чтобы они использовали один и тот же режим.

2
27.01.2020, 23:38

Теги

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