Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将x文件从一个文件夹复制到另一个文件夹_Bash_Macos_Shell - Fatal编程技术网

Bash 将x文件从一个文件夹复制到另一个文件夹

Bash 将x文件从一个文件夹复制到另一个文件夹,bash,macos,shell,Bash,Macos,Shell,我有一个大约7000个文件的文件夹,我需要在第一个x文件之后复制或移动到另一个文件夹 我当前的简单脚本是: for file in $(ls -p | grep -v / | tail -100) do echo $file cp $file "/other /Folder" done 但当文件名中有空格时,它就不起作用了。命令grep只接受名称的第一部分。我愿意接受任何建议并学习如何做?您还可以使用简单的for循环和count跳过第一个计数文件数并移动其余文件数,例如跳过第一个

我有一个大约7000个文件的文件夹,我需要在第一个x文件之后复制或移动到另一个文件夹

我当前的简单脚本是:

for file in $(ls -p | grep -v / | tail -100)
  do
  echo $file
  cp $file "/other /Folder"

done

但当文件名中有空格时,它就不起作用了。命令grep只接受名称的第一部分。我愿意接受任何建议并学习如何做?

您还可以使用简单的
for
循环和
count
跳过第一个
计数
文件数并移动其余文件数,例如跳过第一个
3个
文件(或文件夹):

或者,以脚本形式:

skip=3
for i in *; do 
    ((skip > 0)) && { ((skip--)); continue; }
    mv "$i" "$destdir"
done

您还可以使用一个简单的
for
循环和一个
count
跳过第一个
count
文件数并移动其余文件,例如跳过第一个
3个
文件(或文件夹):

或者,以脚本形式:

skip=3
for i in *; do 
    ((skip > 0)) && { ((skip--)); continue; }
    mv "$i" "$destdir"
done

您需要引用$file,例如“$file”,我同意@user3439894。空白或任何特殊字符都不能与脚本一起使用。一般来说,不要解析ls的输出。参数和命令替换应该是双引号。您需要引用$file,例如“$file”,我同意@user3439894。空白或任何特殊字符都不能与脚本一起使用。一般来说,不要解析ls的输出。参数和命令替换应为双引号.Hmm。这很奇怪,你在运行什么操作系统/shell?这不重要,因为使用了POSIX算术处理和比较。如果您的平台在POSIX
((…)
表示法方面有困难,您可以尝试
[“$skip”-gt'0']&&&{skip=$(expr“$skip”-1);继续;}
。(如果您选择该路径,请确保在
expr“$skip”-1
中有空格)您还可以尝试向shell提示
skip
是一个
integer
,以
declare-i skip
开始,或者尝试
skip=$(skip-1))
而不是
((skip--)
它在OS X El Capitan 10.11.5中运行良好:
BASH_VERSION='3.2.57(1)-发行版'
我在sierra beta 5上。。。我把mv命令放在((skip>0))&&{((skip--);continue;}Hmm之前,让它工作起来。这很奇怪,你在运行什么OS/shell?这不重要,因为使用了POSIX算术处理和比较。如果您的平台在POSIX
((…)
表示法方面有困难,您可以尝试
[“$skip”-gt'0']&&&{skip=$(expr“$skip”-1);继续;}
。(如果您选择该路径,请确保在
expr“$skip”-1
中有空格)您还可以尝试向shell提示
skip
是一个
integer
,以
declare-i skip
开始,或者尝试
skip=$(skip-1))
而不是
((skip--)
它在OS X El Capitan 10.11.5中运行良好:
BASH_VERSION='3.2.57(1)-发行版'
我在sierra beta 5上。。。我通过将mv命令放在((skip>0))&&{((skip--);continue;}之前使其工作