К mkdir '*/pictures''

Мое дерево папки

.
|-- 1
|-- 2
|-- 3
...
|-- 777

Я хотел бы создать изображения папки к каждой папке.

Я работаю неудачно

mkdir */pictures

Один путь, конечно, создает 777 mkdir - команды с regex Vim. Однако я знал бы, как можно сделать это в оболочке.

Как может Вы mkdir */pictures?

2
задан 31.07.2009, 01:22

8 ответов

for x in `seq 1 777`
do
    mkdir $x/pictures;
done

Кроме того, в прошлом Вы упомянули zsh и это должно работать без модификации под, по крайней мере, bash и zsh.

8
ответ дан 08.12.2019, 04:34

Почти то же как другие, но добавление наклонной черты, таким образом, это только считает каталоги и не регулярные файлы

for x in */
do
    mkdir $x/pictures;
done
7
ответ дан 08.12.2019, 04:34
for i in *; do cd $i; mkdir pictures; cd ..; done

Править: Я заметил, что кто-то избил меня к перфорации, таким образом, я улучшу сценарий немного (тест, является ли это каталогом):

for i in *; do if [ -d $i ]; then cd $i; mkdir pictures; cd ..; fi; done
2
ответ дан 08.12.2019, 04:34

Много способов сделать это, я думаю, что это является самым простым:

for f in *; do mkdir $f/pictures; done

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

mkdir {1..777}/pictures

BTW, mkdir может легко сделать несколько каталогов сразу:

mkdir 1/pictures 2/pictures

Проблема состоит в том, что */pictures ни до чего не расширяется в оболочке, так как каталоги еще не существуют.

2
ответ дан 08.12.2019, 04:34

Я собираюсь предположить, что Вы используете удар...

find . -mindepth 1 -maxdepth 1 -type d | while read dir; do mkdir $dir/pictures; done

или если все в каталоге - каталог

ls | while read dir; do mkdir $dir/pictures; done

При использовании tcsh необходимо сделать это с неэлегантным для цикла.

1
ответ дан 08.12.2019, 04:34
mkdir ~/Pictures
mkdir ~/container
mkdir ~/container/1
mkdir ~/container/2
mkdir ~/container/3
mkdir ~/container/4
mkdir ~/container/5

cp -r ~/Pictures ~/container/**/
rm -rf ~/Pictures

Это добьется цели, я только что попробовал его

1
ответ дан 08.12.2019, 04:34

Как насчет:

find . -mindepth 1 -maxdepth 1 -type d -exec mkdir {}/pictures \;
1
ответ дан 08.12.2019, 04:34

Я проверил его, и это должно быть тем, в чем Вы нуждаетесь:

#!/bin/bash 
list=$(/bin/echo *)

for file in $list
do
    if [ -d $file ]; then
        cd $file
        mkdir picture
        cd ..
        echo "Added folder to $file"
    fi
done
0
ответ дан 08.12.2019, 04:34

Теги

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