Bash 将x文件从一个文件夹复制到另一个文件夹
我有一个大约7000个文件的文件夹,我需要在第一个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跳过第一个计数文件数并移动其余文件数,例如跳过第一个
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;}之前使其工作