Перемещение файлов определенного типа / расширения из одного каталога в другой?

У вас все еще есть прямое подключение к Интернету или только с помощью Squid? Apt-get необходимо настроить для работы через прокси-сервер, а также с любым другим программным обеспечением. В /etc/apt/apt.conf добавьте

Acquire::http::Proxy "MYDOMAIN\MYNAME:MYPASS@MY.PROXY.COM:MYPORT"
0
задан 9 November 2017 в 19:08

6 ответов

Принимая во внимание, что 1) Q говорит «большая коллекция ... файлов» - список файлов может не помещаться в одном буфере командной строки (2 084 664 байт в MY-системе); и 2) имена файлов могут содержать забавные символы («My Stuff.jpg»); mv не лучший способ. Используя find, xargs и уверенное знание, что имена файлов НЕ должны содержать NUL-байты (или косые черты):

find /home/tony/Desktop/unsorted_files/ -maxdepth 1 -type f -iname '*.jpg' -print0 | \
    xargs -0 --no-run-if-empty echo mv --target-directory=/home/tony/Desktop/jpgfolder

Как только команды echo d выглядят правильно, удалите echo , и mv выполнит работу.

Если вы уже сделали mv /home/tony/Desktop/unsorted_files/*.jpg /home/tony/Desktop/jpgfolder MY , вы создали /home/tony/Desktop/jpgfolder, ничего не было потеряно, но вы должны, как другие ответы сказали, mkdir -p /home/tony/Desktop/jpgfolder сначала.

2
ответ дан 22 May 2018 в 16:22
  • 1
    Прочитайте man find. Прочитайте man xargs. Попытайтесь заявить о своем замешательстве в качестве вопроса. – waltinator 9 November 2017 в 23:14
  • 2
    @IronUhlan И добавьте этот вопрос здесь вместо публикации нового вопроса с тем же контентом! – dessert 9 November 2017 в 23:49
  • 3
    Что я уже сделал. Я сделал это из-за кодирования. – IronUhlan 9 November 2017 в 23:51
  • 4
    find ... -exec mv -t ... -- {} + будет немного более элегантным, чем обход через xargs, imho. Иначе +1. – David Foerster 11 November 2017 в 03:54
  • 5
    @ david-foerster Как find ... -exec mv -t ... -- {} + обрабатывает слишком много имен файлов? man find говорит The command line is built in much the same way that xargs builds its command lines., но это неясно. – waltinator 15 November 2017 в 09:48

Принимая во внимание, что 1) Q говорит «большая коллекция ... файлов» - список файлов может не помещаться в одном буфере командной строки (2 084 664 байт в MY-системе); и 2) имена файлов могут содержать забавные символы («My Stuff.jpg»); mv не лучший способ. Используя find, xargs и уверенное знание, что имена файлов НЕ должны содержать NUL-байты (или косые черты):

find /home/tony/Desktop/unsorted_files/ -maxdepth 1 -type f -iname '*.jpg' -print0 | \ xargs -0 --no-run-if-empty echo mv --target-directory=/home/tony/Desktop/jpgfolder

Как только команды echo d выглядят правильно, удалите echo , и mv выполнит работу.

Если вы уже сделали mv /home/tony/Desktop/unsorted_files/*.jpg /home/tony/Desktop/jpgfolder MY , вы создали /home/tony/Desktop/jpgfolder, ничего не было потеряно, но вы должны, как другие ответы сказали, mkdir -p /home/tony/Desktop/jpgfolder сначала.

2
ответ дан 18 July 2018 в 03:35

Принимая во внимание, что 1) Q говорит «большая коллекция ... файлов» - список файлов может не помещаться в одном буфере командной строки (2 084 664 байт в MY-системе); и 2) имена файлов могут содержать забавные символы («My Stuff.jpg»); mv не лучший способ. Используя find, xargs и уверенное знание, что имена файлов НЕ должны содержать NUL-байты (или косые черты):

find /home/tony/Desktop/unsorted_files/ -maxdepth 1 -type f -iname '*.jpg' -print0 | \ xargs -0 --no-run-if-empty echo mv --target-directory=/home/tony/Desktop/jpgfolder

Как только команды echo d выглядят правильно, удалите echo , и mv выполнит работу.

Если вы уже сделали mv /home/tony/Desktop/unsorted_files/*.jpg /home/tony/Desktop/jpgfolder MY , вы создали /home/tony/Desktop/jpgfolder, ничего не было потеряно, но вы должны, как другие ответы сказали, mkdir -p /home/tony/Desktop/jpgfolder сначала.

2
ответ дан 24 July 2018 в 17:52

Насколько я знаю - исправления приветствуются - mv фактически не перемещает файлы, он переименовывает их. Таким образом, вы пытаетесь переименовать все jpg-файлы в имя папки.

Я бы попытался:

rsync /home/tony/Desktop/unsorted_files/*.jpg /home/tony/Desktop/jpgfolder
-1
ответ дан 22 May 2018 в 16:22
  • 1
    находясь в одной файловой системе, перемещение и переименование файла - это одно и то же. mv достаточно умен, чтобы узнать, должен ли файл быть перемещен в другую файловую систему или просто переименован в другой каталог. – pim 9 November 2017 в 19:16
  • 2
    pastebin.com/rQg59xu7 @waltinator, я попытался реализовать ваше решение, но все же файлы не передаются – IronUhlan 9 November 2017 в 23:49

Насколько я знаю - исправления приветствуются - mv фактически не перемещает файлы, он переименовывает их. Таким образом, вы пытаетесь переименовать все jpg-файлы в имя папки.

Я бы попытался:

rsync /home/tony/Desktop/unsorted_files/*.jpg /home/tony/Desktop/jpgfolder
-1
ответ дан 18 July 2018 в 03:35

Насколько я знаю - исправления приветствуются - mv фактически не перемещает файлы, он переименовывает их. Таким образом, вы пытаетесь переименовать все jpg-файлы в имя папки.

Я бы попытался:

rsync /home/tony/Desktop/unsorted_files/*.jpg /home/tony/Desktop/jpgfolder
-1
ответ дан 24 July 2018 в 17:52
  • 1
    находясь в одной файловой системе, перемещение и переименование файла - это одно и то же. mv достаточно умен, чтобы узнать, должен ли файл быть перемещен в другую файловую систему или просто переименован в другой каталог. – pim 9 November 2017 в 19:16
  • 2
    pastebin.com/rQg59xu7 @waltinator, я попытался реализовать ваше решение, но все же файлы не передаются – IronUhlan 9 November 2017 в 23:49

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

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