复制所有没有扩展名的文件

Hos*_*asr 5 shell cp filenames wildcards

我们可以通过像这样的扩展名复制一些文件:

cp *.txt ../new/
Run Code Online (Sandbox Code Playgroud)

但是如何复制所有没有扩展名的文件?

Abe*_*ung 16

@ubaid-ashraf 的答案几乎就在那里。指定没有扩展名的文件的方法ksh是:

cp -- !(*.*) /new/path/
Run Code Online (Sandbox Code Playgroud)

以便跳过文件名中带有点的任何文件。

对于在工作bash,你需要启用extglob选项(shopt -s extglob)和kshglob选件zshset -o kshglob)。

  • 不,它不会移动目录。`cp` 将跳过目录,除非与 `-r` 或 `-R` 选项一起使用。 (2认同)
  • @hoosssein 双破折号可防止后面的任何内容被视为命令行选项。如果有像“-r”或“-s”这样奇怪的文件名,双破折号可以帮助防范潜在的灾难。 (2认同)

小智 6

您可以执行以下操作:

cp -- !(*.txt) /path/to/directory
Run Code Online (Sandbox Code Playgroud)

上面的代码将复制所有没有 .txt 扩展名的文件。您还可以通过管道字符提供多个扩展名。

例如:

cp -- !(*.txt|*.c|*.py) /path/to/directory
Run Code Online (Sandbox Code Playgroud)