Как я могу перемещать файлы, используя цикл bash / for внутри подкаталогов?

У меня есть папка, в которой у меня 20 разных файлов расширений, и я бы хотел переместить эти файлы в 3 разные папки. Теперь, как мне переместить все эти файлы (условия, на основе которых они попадают в папки, не важны), БЕЗ этих 3 подкаталогов, если они уже существуют? В данный момент я застрял в том, чтобы поместить эти подпапки в себя, и, очевидно, я не хочу, чтобы только те файлы, которые находятся на том же уровне, что и 3 подпапки, я хотел бы поместить в эти 3 подпапки. Спасибо!

Пс. Если я сосредотачиваюсь на * .txt в цикле for, он говорит мне, что не может его описать, поэтому я в замешательстве ..

X
 |_A
 |_B
 |_C
 |_file1.ext
 |_file2.ext
 |_file3.ext
 .
 .
 .
 |_file20.ext  
0
задан 21 July 2019 в 19:33

1 ответ

Некоторые опции исключить подкаталоги:

  1. так как Вы хотите переместить файлы с расширениями, изменением for i in * кому: for i in *.* (это может быть самой простой опцией, если ни одно из Ваших имен подкаталога не содержит a . символ)

  2. добавьте явный тест для типа файла напр. for i in *; do [[ -f "$f" ]] || continue; ...

  3. (подобный вышеупомянутому) использование find . -maxdepth 1 -type f -exec ...

  4. переключитесь на оболочку, которая поддерживает спецификаторы шарика, такие как zsh - где можно записать for f in *(.) циклично выполняться по регулярным файлам только

0
ответ дан 23 October 2019 в 09:51

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

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