Мне не нужно перемещать папки, только файлы.
Я пробовал, mv *
но эта команда также перемещает папки.
command-line
files
mv
Archit
источник
источник
find ... -exec mv -t "$TARGET_DIR" -- '{}' +
будет более безопасным (если$TARGET_DIR
каталог отсутствует или начинается совпадение-
) и более эффективным (поскольку он не порождает новый подпроцесс для каждого сопоставленного файла).Я думаю, что вы хотите записать только свои файлы. Сначала перейдите в ваш каталог и используйте эту команду, замените $ TARGET вашим целевым путем к каталогу. Если вы хотите скопировать ваши файлы, замените
mv
наcp
.если я объясню это,
find . -type f
означает выбрать все файлы и-exec mv {} $TARGET \;
означает выполнитьmv
команду для всех выбранных элементов.Предыдущий ответ имеет ошибку ..
mv
все файлы внутри подкаталогов также. Быстрое решение заключается в использовании-maxdepth 1
. Тогда это не рекурсивноmv
файлы в подкаталогах. Ниже правильный.источник
-type f
Не мешает рекурсию.Python подход
При работе с файлами рекурсивно,
find
это путь. В данном конкретном случае это не обязательно, но можно использовать с-maxdepth 1
другими, как показывают другие ответы.Простая команда python может сделать это также. Вот пример:
Как это работает:
fl=[f for f in os.listdir('.') if os.path.isfile(f)]
перебирает всеos.listdir('.')
найденные элементы, и мы проверяем, является ли элемент файлом, используяos.path.isfile()
функцию.Как только
fl
список файлов построен, мы используемmap()
функцию. Эта функция принимает два аргумента - функцию и список элементов; он будет выполнять функцию, которую мы дали для каждого файла в списке. Таким образом, здесь мы имеем вlambda x:shutil.move(x,'./a_directory')
качестве анонимной функции, которая будет перемещать данный файл в заданный каталог, а затем у нас естьfl
список файлов, которые мы создали.Для удобства чтения и общего использования мы также можем переписать его как общий скрипт на python, который принимает два аргумента - исходный каталог и целевой подкаталог.
И использование так:
источник
Если вы используете zsh вместо bash, вы можете сделать это:
(.)
В конце называется Глоб классификатор;.
внутри конкретно означает соответствовать только обычным файлам.Делать это
mv *(.) "$target"
быстро и практично. Однако, если вы делаете это как часть сценария, вы можете вместо этого написать что-то вроде того, что предложили Frxstrem и David Forestermv -t "$target" -- *(.)
, чтобы лучше обрабатывать угловые случаи, которые могут возникнуть при использовании другими людьми.источник
mv -t "$TARGET" -- "$SOURCE"/*(.)
было бы безопаснее (в случае, если он"$TARGET"
начинается с-
или не является каталогом). Мне действительно нравится решение Zsh!Чтобы переместить все, кроме каталогов из
source-dir
каталога вdestination-dir
каталог, в Python:См. Запуск файла Python в терминале .
источник
import mypackage
доfrom mypackage import ...
from __future__
импорт и обычныйfrom pathlib
импорт.import module
должно быть первым (импорт из библиотеки и сторонних производителей)from module import object
должно быть последним (локально / специфично для библиотеки)Я бы использовал
это будет работать до тех пор, пока ваши папки не имеют расширений.
источник