![mkdir `*/pictures`](https://linux22.com/image/1211030/mkdir%20%60*%2Fpictures%60.png)
我的文件夹树
.
|-- 1
|-- 2
|-- 3
...
|-- 777
我想为每个文件夹创建文件夹图片。
我跑不成功
mkdir */pictures
当然,一种方法是mkdir
使用 Vim 的正则表达式创建 777 命令。但是,我不知道如何在 shell 中做到这一点。
你怎么mkdir */pictures
?
答案1
for x in `seq 1 777`
do
mkdir $x/pictures;
done
此外,您过去曾提到过zsh
,这至少在bash
和下无需修改就可以工作zsh
。
答案2
与其他的几乎相同,但添加了斜线,因此它只计算目录而不计算常规文件
for x in */
do
mkdir $x/pictures;
done
答案3
有很多方法可以做到这一点,我认为这是最简单的:
for f in *; do mkdir $f/pictures; done
这种方法既快捷又简单,会为当前目录中的所有内容创建一个子目录。如果当前工作目录中有文件,您将收到无害的错误。如果这让您感到困扰,最好使用 find 或 seq 等更复杂的解决方案。如果您的目录已编号,那么 Sean 的 seq 示例(在 bash 中)的更简单版本是
mkdir {1..777}/pictures
顺便说一句,mkdir 可以轻松地同时创建多个目录:
mkdir 1/pictures 2/pictures
问题是由于目录尚不存在,所以 */pictures 在 shell 中不会扩展为任何内容。
答案4
我假设您正在使用 bash......
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,则必须使用不雅的 for 循环来执行此操作。