我们可以通过扩展名复制一些文件,如下所示:
cp *.txt ../new/
但如何复制所有没有扩展名的文件呢?
答案1
@ubaid-ashraf 的答案已经差不多了。指定不带扩展名的文件的方法ksh
是:
cp -- !(*.*) /new/path/
以便跳过文件名中带有点的任何文件。
要使其在 中工作bash
,您需要启用extglob
选项 ( shopt -s extglob
) 和( )kshglob
中的选项。zsh
set -o kshglob
答案2
你可以这样做:
cp -- !(*.txt) /path/to/directory
上面的代码将复制所有不带.txt扩展名的文件。您还可以通过管道字符给出多个扩展名。
例如:
cp -- !(*.txt|*.c|*.py) /path/to/directory
答案3
您可以使用 find+grep 只获取没有扩展名的文件
find . -maxdepth 1 -type f | sed 's/^\.\///' | grep -v "\."
所以你的复制命令将是
cp ` find . -maxdepth 1 -type f | sed 's/^\.\///' | grep -v "\." ` destination_folder