一个命令在linux命令中创建一个目录和文件

时间:2013-08-01 06:25:56

标签: linux command-line

假设我当前的目录是 A 。我想在 B 中创建一个目录 B 和一个文件“myfile.txt”。

如何在终端的一个命令中执行此操作?

修改

目录可以多次嵌套。就像我可能想要在其中创建 B / C / D 然后再创建“myfile.txt”。我也不想重复目录部分。

以下命令将在任何级别创建目录。

mkdir -p B/C/D 

mkdir -p B/C/D && touch B/C/D/myfile.txt

将创建目录和文件。但我不想在touch命令后重复目录部分。这可能吗?

10 个答案:

答案 0 :(得分:32)

mkdir B && touch B/myfile.txt

或者,创建一个函数:

mkfile() { mkdir -p -- "$1" && touch -- "$1"/"$2" }

使用2个参数执行它:create to path和filename。话说:

mkfile B/C/D myfile.txt

将在目录myfile.txt中创建文件B/C/D

答案 1 :(得分:1)

为此,您可以创建自己的功能。例如:

$ echo 'mkfile() { mkdir -p "$(dirname "$1")" && touch "$1" ;  }' >> ~/.bashrc
$ source ~/.bashrc
$ mkfile ./fldr1/fldr2/file.txt

说明:

  • 使用~/.bashrc命令
  • 将函数插入echo文件的末尾
  • -p标志用于创建嵌套文件夹,例如fldr2
  • 使用~/.bashrc命令
  • 更新source文件
  • 使用mkfile功能创建文件

答案 2 :(得分:1)

将此添加到〜/ .bashrc:

function mkfile() { 
    mkdir -p  "$1" && touch  "$1"/"$2" 
}

保存,然后使其可用而无需重新启动或注销,请执行:$ source ~/.bashrc 或者您可以这样做:

$ mkdir folder && touch $_/file.txt

请注意,$ _ =文件夹

答案 3 :(得分:1)

mkdir -p Python/Beginner/CH01 && touch $_/hello_world.py

说明: -p->如果要创建父目录和子目录,请使用-p $ _->将其用于当前目录,我们以内联方式对其进行处理

答案 4 :(得分:0)

devnull' s answer提供了一个功能:

mkfile() { mkdir -p -- "$1" && touch -- "$1"/"$2" }

这个功能对我来说不起作用(我在WSL Ubuntu上运行bash 4.3.48),但是一旦我删除了双破折号就行了。所以,这对我有用:

echo 'mkfile() { mkdir -p "$1" && touch "$1"/"$2" }' >> ~/.bash_profile
source ~/.bash_profile
mkfile sample/dir test.file

答案 5 :(得分:0)

只需下面的简单命令即可。

mkdir a && touch !$/file.txt

Thx

答案 6 :(得分:0)

您可以创建一个函数,以sed来解析参数;

atouch() {
  mkdir -p $(sed 's/\(.*\)\/.*/\1/' <<< $1) && touch $1
}

,然后用一个参数执行它:

atouch B/C/D/myfile.txt

答案 7 :(得分:0)

您可以安装脚本;

pip3 install --user advance-touch

安装后,您可以使用ad命令

ad airport/plane/captain.txt
airport/
├── plane/
│   ├── captain.txt

答案 8 :(得分:0)

我在 Windows 10 机器上使用 git-bash 尝试了以下命令。 这对我有用。 假设我想创建一个名为 "Files" 的目录,在这个目录下我想有 "file1.txt,file2.txt,file3.txt" ..etc 文件

mkdir Files && touch $_/file1.txt $_/file2.txt $_/file3.txt

答案 9 :(得分:-2)

这可能有效:

mkdir {{FOLDER NAME}}
cd {{FOLDER NAME}}
touch {{FOLDER NAME}}/file.txt