Замена для команды DOS xcopy

В DOS есть команда

xcopy /s *.mp3 ..\TEMP2

Как это сделать в Ubuntu?

cp -r *.mp3 ../TEMP2

будет копировать рекурсивно все mp3-файлы, к сожалению, без пути из-за фильтра *.mp3.

cp -r *.* ../TEMP2

скопирует путь, но не может быть ограничен mp3-файлами

Я посмотрел на rsync, но я этого не понимаю.

6
задан 31 August 2011 в 11:44

12 ответов

Сила инструментов в Ubuntu заключается в том, что вы можете их комбинировать. Следующая команда находит все .mp3-файлы в текущем каталоге и его подкаталогах и копирует их в папку ../TEMP2/, сохраняя пути:

find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \; find -iname '*.mp3' - находит все файлы, заканчивающиеся на .mp3 (без учета регистра) и -exec - выполняет команду для каждого совпадения: install -D {} ../TEMP2/{} - копирует согласованный файл в ../TEMP/, сохраняя путь. ({} заменяется на путь, включая имя файла) \; - завершает команду -exec

. Если вы хотите получить прогресс, добавьте -ls («список») в команду перед [F13]. Он также может быть помещен после \;, но в этом случае имя отображается после копирования. Примеры:

find -iname '*.mp3' -ls -exec install -D {} ../TEMP2/{} \; find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \; -ls
8
ответ дан 25 July 2018 в 21:23
  • 1
    Я не понимаю, почему это будет отличаться от rsync -r, за исключением использования более сложного синтаксиса – MestreLion 30 August 2011 в 21:03
  • 2
    Я не знаком с rsync, так что это лучшая команда, о которой я мог думать. – Lekensteyn 30 August 2011 в 21:04
  • 3
    Полагаю, вам нужна опция -D для install. – enzotib 30 August 2011 в 21:32
  • 4
    @sleepless Повторите попытку, у меня отсутствует опция -D, которая при необходимости создавала бы любые каталоги. – Lekensteyn 31 August 2011 в 00:55
  • 5
    @sleepless: я не могу подтвердить ваши выводы, find показывает скрытые файлы (например, .hidden.mp3, а также .hiddenfolder/file.mp3) для меня. Возможно, ваш файловый браузер скроет его для вас? Если вы используете команду ls, добавьте параметр -A, чтобы показать также dotfiles. – Lekensteyn 31 August 2011 в 13:08

Есть несколько вариантов, но никто не очень просто, я боюсь ...

rsync

rsync -r --include="*/" --include="*.mp3" --exclude="*" --prune-empty-dirs . ../TEMP2

Это говорит об исключении всех файлов (exclude="*"), но просмотреть все каталоги (include="*/") и включить все mp3-файлы (include="*.mp3"). Если вы не хотите копировать каталоги, не содержащие mp3-файлов, кроме того, необходим параметр --prune-empty-dirs.

zip

zip -R archive.zip "*.mp3" unzip -d ../TEMP2 archive.zip && rm archive.zip

Первая команда создает архив со всеми mp3 файлы, второй разрывает содержимое в целевой каталог и удаляет файл архива, если он был успешным.

find

find . -iname "*.mp3" -exec install -D {} ../TEMP2/{} ";"

Это найдет все mp3-файлы и скопирует их в соответствующий путь в каталоге ../TEMP2, после создания структуры каталога сначала (install -D).

скопировать все и удалить остальные

Это имеет смысл только в том случае, если у вас есть только несколько файлов, которые вы не хотите копировать:

cp -r * ../TEMP2 find ../TEMP2 -type f \! -iname '*.mp3' -delete

Это копирует все, а затем удаляет все файлы, которые не являются mp3-файлами

3
ответ дан 25 July 2018 в 21:23
  • 1
    Да, вы тоже строите работы! Мне это нравится больше всего. Это отличный опыт обучения. Я пришел в нужное место. Но программное обеспечение форума очень недружелюбие пользователя. Rinus – sleepless 31 August 2011 в 00:24
  • 2
    lekenstein's find -iname '* .mp3' -exec install -D {} ../ TEMP2 / {} \; с энзотибом "-D" заставил его работать. Работа Марселя Стимберга превосходна. Это означает, что после двухдневного поиска решение с вашей помощью. Ты великолепен. Большое спасибо даже за вклад, который не сработал. Решено! Rinus – sleepless 31 August 2011 в 11:48

Сила инструментов в Ubuntu заключается в том, что вы можете их комбинировать. Следующая команда находит все .mp3-файлы в текущем каталоге и его подкаталогах и копирует их в папку ../TEMP2/, сохраняя пути:

find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \; find -iname '*.mp3' - находит все файлы, заканчивающиеся на .mp3 (без учета регистра) и -exec - выполняет команду для каждого совпадения: install -D {} ../TEMP2/{} - копирует согласованный файл в ../TEMP/, сохраняя путь. ({} заменяется на путь, включая имя файла) \; - завершает команду -exec

. Если вы хотите получить прогресс, добавьте -ls («список») в команду перед [F13]. Он также может быть помещен после \;, но в этом случае имя отображается после копирования. Примеры:

find -iname '*.mp3' -ls -exec install -D {} ../TEMP2/{} \; find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \; -ls
8
ответ дан 31 July 2018 в 11:18
  • 1
    Я не понимаю, почему это будет отличаться от rsync -r, за исключением использования более сложного синтаксиса – MestreLion 30 August 2011 в 21:03
  • 2
    Я не знаком с rsync, так что это лучшая команда, о которой я мог думать. – Lekensteyn 30 August 2011 в 21:04
  • 3
    Полагаю, вам нужна опция -D для install. – enzotib 30 August 2011 в 21:32
  • 4
    @sleepless Повторите попытку, у меня отсутствует опция -D, которая при необходимости создавала бы любые каталоги. – Lekensteyn 31 August 2011 в 00:55
  • 5
    @sleepless: я не могу подтвердить ваши выводы, find показывает скрытые файлы (например, .hidden.mp3, а также .hiddenfolder/file.mp3) для меня. Возможно, ваш файловый браузер скроет его для вас? Если вы используете команду ls, добавьте параметр -A, чтобы показать также dotfiles. – Lekensteyn 31 August 2011 в 13:08

Есть несколько вариантов, но никто не очень просто, я боюсь ...

rsync

rsync -r --include="*/" --include="*.mp3" --exclude="*" --prune-empty-dirs . ../TEMP2

Это говорит об исключении всех файлов (exclude="*"), но просмотреть все каталоги (include="*/") и включить все mp3-файлы (include="*.mp3"). Если вы не хотите копировать каталоги, не содержащие mp3-файлов, кроме того, необходим параметр --prune-empty-dirs.

zip

zip -R archive.zip "*.mp3" unzip -d ../TEMP2 archive.zip && rm archive.zip

Первая команда создает архив со всеми mp3 файлы, второй разрывает содержимое в целевой каталог и удаляет файл архива, если он был успешным.

find

find . -iname "*.mp3" -exec install -D {} ../TEMP2/{} ";"

Это найдет все mp3-файлы и скопирует их в соответствующий путь в каталоге ../TEMP2, после создания структуры каталога сначала (install -D).

скопировать все и удалить остальные

Это имеет смысл только в том случае, если у вас есть только несколько файлов, которые вы не хотите копировать:

cp -r * ../TEMP2 find ../TEMP2 -type f \! -iname '*.mp3' -delete

Это копирует все, а затем удаляет все файлы, которые не являются mp3-файлами

3
ответ дан 31 July 2018 в 11:18
  • 1
    Да, вы тоже строите работы! Мне это нравится больше всего. Это отличный опыт обучения. Я пришел в нужное место. Но программное обеспечение форума очень недружелюбие пользователя. Rinus – sleepless 31 August 2011 в 00:24
  • 2
    lekenstein's find -iname '* .mp3' -exec install -D {} ../ TEMP2 / {} \; с энзотибом "-D" заставил его работать. Работа Марселя Стимберга превосходна. Это означает, что после двухдневного поиска решение с вашей помощью. Ты великолепен. Большое спасибо даже за вклад, который не сработал. Решено! Rinus – sleepless 31 August 2011 в 11:48

Сила инструментов в Ubuntu заключается в том, что вы можете их комбинировать. Следующая команда находит все .mp3-файлы в текущем каталоге и его подкаталогах и копирует их в папку ../TEMP2/, сохраняя пути:

find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \; find -iname '*.mp3' - находит все файлы, заканчивающиеся на .mp3 (без учета регистра) и -exec - выполняет команду для каждого совпадения: install -D {} ../TEMP2/{} - копирует согласованный файл в ../TEMP/, сохраняя путь. ({} заменяется на путь, включая имя файла) \; - завершает команду -exec

. Если вы хотите получить прогресс, добавьте -ls («список») в команду перед [F13]. Он также может быть помещен после \;, но в этом случае имя отображается после копирования. Примеры:

find -iname '*.mp3' -ls -exec install -D {} ../TEMP2/{} \; find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \; -ls
8
ответ дан 2 August 2018 в 03:03
  • 1
    Я не понимаю, почему это будет отличаться от rsync -r, за исключением использования более сложного синтаксиса – MestreLion 30 August 2011 в 21:03
  • 2
    Я не знаком с rsync, так что это лучшая команда, о которой я мог думать. – Lekensteyn 30 August 2011 в 21:04
  • 3
    Полагаю, вам нужна опция -D для install. – enzotib 30 August 2011 в 21:32
  • 4
    @sleepless Повторите попытку, у меня отсутствует опция -D, которая при необходимости создавала бы любые каталоги. – Lekensteyn 31 August 2011 в 00:55
  • 5
    @sleepless: я не могу подтвердить ваши выводы, find показывает скрытые файлы (например, .hidden.mp3, а также .hiddenfolder/file.mp3) для меня. Возможно, ваш файловый браузер скроет его для вас? Если вы используете команду ls, добавьте параметр -A, чтобы показать также dotfiles. – Lekensteyn 31 August 2011 в 13:08

Есть несколько вариантов, но никто не очень просто, я боюсь ...

rsync

rsync -r --include="*/" --include="*.mp3" --exclude="*" --prune-empty-dirs . ../TEMP2

Это говорит об исключении всех файлов (exclude="*"), но просмотреть все каталоги (include="*/") и включить все mp3-файлы (include="*.mp3"). Если вы не хотите копировать каталоги, не содержащие mp3-файлов, кроме того, необходим параметр --prune-empty-dirs.

zip

zip -R archive.zip "*.mp3" unzip -d ../TEMP2 archive.zip && rm archive.zip

Первая команда создает архив со всеми mp3 файлы, второй разрывает содержимое в целевой каталог и удаляет файл архива, если он был успешным.

find

find . -iname "*.mp3" -exec install -D {} ../TEMP2/{} ";"

Это найдет все mp3-файлы и скопирует их в соответствующий путь в каталоге ../TEMP2, после создания структуры каталога сначала (install -D).

скопировать все и удалить остальные

Это имеет смысл только в том случае, если у вас есть только несколько файлов, которые вы не хотите копировать:

cp -r * ../TEMP2 find ../TEMP2 -type f \! -iname '*.mp3' -delete

Это копирует все, а затем удаляет все файлы, которые не являются mp3-файлами

3
ответ дан 2 August 2018 в 03:03
  • 1
    Да, вы тоже строите работы! Мне это нравится больше всего. Это отличный опыт обучения. Я пришел в нужное место. Но программное обеспечение форума очень недружелюбие пользователя. Rinus – sleepless 31 August 2011 в 00:24
  • 2
    lekenstein's find -iname '* .mp3' -exec install -D {} ../ TEMP2 / {} \; с энзотибом "-D" заставил его работать. Работа Марселя Стимберга превосходна. Это означает, что после двухдневного поиска решение с вашей помощью. Ты великолепен. Большое спасибо даже за вклад, который не сработал. Решено! Rinus – sleepless 31 August 2011 в 11:48

Сила инструментов в Ubuntu заключается в том, что вы можете их комбинировать. Следующая команда находит все .mp3-файлы в текущем каталоге и его подкаталогах и копирует их в папку ../TEMP2/, сохраняя пути:

find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \; find -iname '*.mp3' - находит все файлы, заканчивающиеся на .mp3 (без учета регистра) и -exec - выполняет команду для каждого совпадения: install -D {} ../TEMP2/{} - копирует согласованный файл в ../TEMP/, сохраняя путь. ({} заменяется на путь, включая имя файла) \; - завершает команду -exec

. Если вы хотите получить прогресс, добавьте -ls («список») в команду перед [F13]. Он также может быть помещен после \;, но в этом случае имя отображается после копирования. Примеры:

find -iname '*.mp3' -ls -exec install -D {} ../TEMP2/{} \; find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \; -ls
8
ответ дан 4 August 2018 в 18:53
  • 1
    Я не понимаю, почему это будет отличаться от rsync -r, за исключением использования более сложного синтаксиса – MestreLion 30 August 2011 в 21:03
  • 2
    Я не знаком с rsync, так что это лучшая команда, о которой я мог думать. – Lekensteyn 30 August 2011 в 21:04
  • 3
    Полагаю, вам нужна опция -D для install. – enzotib 30 August 2011 в 21:32
  • 4
    @sleepless Повторите попытку, у меня отсутствует опция -D, которая при необходимости создавала бы любые каталоги. – Lekensteyn 31 August 2011 в 00:55
  • 5
    @sleepless: я не могу подтвердить ваши выводы, find показывает скрытые файлы (например, .hidden.mp3, а также .hiddenfolder/file.mp3) для меня. Возможно, ваш файловый браузер скроет его для вас? Если вы используете команду ls, добавьте параметр -A, чтобы показать также dotfiles. – Lekensteyn 31 August 2011 в 13:08

Есть несколько вариантов, но никто не очень просто, я боюсь ...

rsync

rsync -r --include="*/" --include="*.mp3" --exclude="*" --prune-empty-dirs . ../TEMP2

Это говорит об исключении всех файлов (exclude="*"), но просмотреть все каталоги (include="*/") и включить все mp3-файлы (include="*.mp3"). Если вы не хотите копировать каталоги, не содержащие mp3-файлов, кроме того, необходим параметр --prune-empty-dirs.

zip

zip -R archive.zip "*.mp3" unzip -d ../TEMP2 archive.zip && rm archive.zip

Первая команда создает архив со всеми mp3 файлы, второй разрывает содержимое в целевой каталог и удаляет файл архива, если он был успешным.

find

find . -iname "*.mp3" -exec install -D {} ../TEMP2/{} ";"

Это найдет все mp3-файлы и скопирует их в соответствующий путь в каталоге ../TEMP2, после создания структуры каталога сначала (install -D).

скопировать все и удалить остальные

Это имеет смысл только в том случае, если у вас есть только несколько файлов, которые вы не хотите копировать:

cp -r * ../TEMP2 find ../TEMP2 -type f \! -iname '*.mp3' -delete

Это копирует все, а затем удаляет все файлы, которые не являются mp3-файлами

3
ответ дан 4 August 2018 в 18:53
  • 1
    Да, вы тоже строите работы! Мне это нравится больше всего. Это отличный опыт обучения. Я пришел в нужное место. Но программное обеспечение форума очень недружелюбие пользователя. Rinus – sleepless 31 August 2011 в 00:24
  • 2
    lekenstein's find -iname '* .mp3' -exec install -D {} ../ TEMP2 / {} \; с энзотибом "-D" заставил его работать. Работа Марселя Стимберга превосходна. Это означает, что после двухдневного поиска решение с вашей помощью. Ты великолепен. Большое спасибо даже за вклад, который не сработал. Решено! Rinus – sleepless 31 August 2011 в 11:48

Сила инструментов в Ubuntu заключается в том, что вы можете их комбинировать. Следующая команда находит все .mp3-файлы в текущем каталоге и его подкаталогах и копирует их в папку ../TEMP2/, сохраняя пути:

find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \; find -iname '*.mp3' - находит все файлы, заканчивающиеся на .mp3 (без учета регистра) и -exec - выполняет команду для каждого совпадения: install -D {} ../TEMP2/{} - копирует согласованный файл в ../TEMP/, сохраняя путь. ({} заменяется на путь, включая имя файла) \; - завершает команду -exec

. Если вы хотите получить прогресс, добавьте -ls («список») в команду перед [F13]. Он также может быть помещен после \;, но в этом случае имя отображается после копирования. Примеры:

find -iname '*.mp3' -ls -exec install -D {} ../TEMP2/{} \; find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \; -ls
8
ответ дан 6 August 2018 в 03:16
  • 1
    Я не понимаю, почему это будет отличаться от rsync -r, за исключением использования более сложного синтаксиса – MestreLion 30 August 2011 в 21:03
  • 2
    Я не знаком с rsync, так что это лучшая команда, о которой я мог думать. – Lekensteyn 30 August 2011 в 21:04
  • 3
    Полагаю, вам нужна опция -D для install. – enzotib 30 August 2011 в 21:32
  • 4
    @sleepless Повторите попытку, у меня отсутствует опция -D, которая при необходимости создавала бы любые каталоги. – Lekensteyn 31 August 2011 в 00:55
  • 5
    @sleepless: я не могу подтвердить ваши выводы, find показывает скрытые файлы (например, .hidden.mp3, а также .hiddenfolder/file.mp3) для меня. Возможно, ваш файловый браузер скроет его для вас? Если вы используете команду ls, добавьте параметр -A, чтобы показать также dotfiles. – Lekensteyn 31 August 2011 в 13:08

Есть несколько вариантов, но никто не очень просто, я боюсь ...

rsync

rsync -r --include="*/" --include="*.mp3" --exclude="*" --prune-empty-dirs . ../TEMP2

Это говорит об исключении всех файлов (exclude="*"), но просмотреть все каталоги (include="*/") и включить все mp3-файлы (include="*.mp3"). Если вы не хотите копировать каталоги, не содержащие mp3-файлов, кроме того, необходим параметр --prune-empty-dirs.

zip

zip -R archive.zip "*.mp3" unzip -d ../TEMP2 archive.zip && rm archive.zip

Первая команда создает архив со всеми mp3 файлы, второй разрывает содержимое в целевой каталог и удаляет файл архива, если он был успешным.

find

find . -iname "*.mp3" -exec install -D {} ../TEMP2/{} ";"

Это найдет все mp3-файлы и скопирует их в соответствующий путь в каталоге ../TEMP2, после создания структуры каталога сначала (install -D).

скопировать все и удалить остальные

Это имеет смысл только в том случае, если у вас есть только несколько файлов, которые вы не хотите копировать:

cp -r * ../TEMP2 find ../TEMP2 -type f \! -iname '*.mp3' -delete

Это копирует все, а затем удаляет все файлы, которые не являются mp3-файлами

3
ответ дан 6 August 2018 в 03:16
  • 1
    Да, вы тоже строите работы! Мне это нравится больше всего. Это отличный опыт обучения. Я пришел в нужное место. Но программное обеспечение форума очень недружелюбие пользователя. Rinus – sleepless 31 August 2011 в 00:24
  • 2
    lekenstein's find -iname '* .mp3' -exec install -D {} ../ TEMP2 / {} \; с энзотибом "-D" заставил его работать. Работа Марселя Стимберга превосходна. Это означает, что после двухдневного поиска решение с вашей помощью. Ты великолепен. Большое спасибо даже за вклад, который не сработал. Решено! Rinus – sleepless 31 August 2011 в 11:48

Сила инструментов в Ubuntu заключается в том, что вы можете их комбинировать. Следующая команда находит все .mp3-файлы в текущем каталоге и его подкаталогах и копирует их в папку ../TEMP2/, сохраняя пути:

find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \; find -iname '*.mp3' - находит все файлы, заканчивающиеся на .mp3 (без учета регистра) и -exec - выполняет команду для каждого совпадения: install -D {} ../TEMP2/{} - копирует согласованный файл в ../TEMP/, сохраняя путь. ({} заменяется на путь, включая имя файла) \; - завершает команду -exec

. Если вы хотите получить прогресс, добавьте -ls («список») в команду перед [F13]. Он также может быть помещен после \;, но в этом случае имя отображается после копирования. Примеры:

find -iname '*.mp3' -ls -exec install -D {} ../TEMP2/{} \; find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \; -ls
8
ответ дан 7 August 2018 в 20:56
  • 1
    Я не понимаю, почему это будет отличаться от rsync -r, за исключением использования более сложного синтаксиса – MestreLion 30 August 2011 в 21:03
  • 2
    Я не знаком с rsync, так что это лучшая команда, о которой я мог думать. – Lekensteyn 30 August 2011 в 21:04
  • 3
    Полагаю, вам нужна опция -D для install. – enzotib 30 August 2011 в 21:32
  • 4
    @sleepless Повторите попытку, у меня отсутствует опция -D, которая при необходимости создавала бы любые каталоги. – Lekensteyn 31 August 2011 в 00:55
  • 5
    @sleepless: я не могу подтвердить ваши выводы, find показывает скрытые файлы (например, .hidden.mp3, а также .hiddenfolder/file.mp3) для меня. Возможно, ваш файловый браузер скроет его для вас? Если вы используете команду ls, добавьте параметр -A, чтобы показать также dotfiles. – Lekensteyn 31 August 2011 в 13:08

Есть несколько вариантов, но никто не очень просто, я боюсь ...

rsync

rsync -r --include="*/" --include="*.mp3" --exclude="*" --prune-empty-dirs . ../TEMP2

Это говорит об исключении всех файлов (exclude="*"), но просмотреть все каталоги (include="*/") и включить все mp3-файлы (include="*.mp3"). Если вы не хотите копировать каталоги, не содержащие mp3-файлов, кроме того, необходим параметр --prune-empty-dirs.

zip

zip -R archive.zip "*.mp3" unzip -d ../TEMP2 archive.zip && rm archive.zip

Первая команда создает архив со всеми mp3 файлы, второй разрывает содержимое в целевой каталог и удаляет файл архива, если он был успешным.

find

find . -iname "*.mp3" -exec install -D {} ../TEMP2/{} ";"

Это найдет все mp3-файлы и скопирует их в соответствующий путь в каталоге ../TEMP2, после создания структуры каталога сначала (install -D).

скопировать все и удалить остальные

Это имеет смысл только в том случае, если у вас есть только несколько файлов, которые вы не хотите копировать:

cp -r * ../TEMP2 find ../TEMP2 -type f \! -iname '*.mp3' -delete

Это копирует все, а затем удаляет все файлы, которые не являются mp3-файлами

3
ответ дан 7 August 2018 в 20:56
  • 1
    Да, вы тоже строите работы! Мне это нравится больше всего. Это отличный опыт обучения. Я пришел в нужное место. Но программное обеспечение форума очень недружелюбие пользователя. Rinus – sleepless 31 August 2011 в 00:24
  • 2
    lekenstein's find -iname '* .mp3' -exec install -D {} ../ TEMP2 / {} \; с энзотибом "-D" заставил его работать. Работа Марселя Стимберга превосходна. Это означает, что после двухдневного поиска решение с вашей помощью. Ты великолепен. Большое спасибо даже за вклад, который не сработал. Решено! Rinus – sleepless 31 August 2011 в 11:48

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

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