我只在文本文件中移动文件名,该文件正在使用:
cd / data / sources /找到$ PWD -type f -name“Asset _ *”>> /data/processing/asset_files.txt但是,我还需要:移动……
你走错了路,想要复制/移动1000个条目。你似乎有很多 Asset_* 文件(超过1000),并通过将数字限制为1000,你想检查行为是否正确,然后为整个群体做。 尽管这似乎是正确的,但限制为1000是一个相当大的负担,并且会使您的脚本变得复杂无用。 我提出另一种方法:想象你有这样的文件名:
Asset_*
Asset_00000 Asset_00001 Asset_00002 ... Asset_00010 Asset_00011 ... Asset_99999
然后,你可能会先尝试做你的事情,使用 Asset_0000* ,然后,一旦你确认一切都是正确的,那就做好 Asset_* 文件。
Asset_0000*
就移动而言,您可以按如下方式执行此操作:
find /directory -name "Asset_0000*" -exec mv {} /target_directory \;
重构@Dominique的答案你可以使用find命令并移动文件。这可能需要很长时间(取决于文件数量) 命令如下:
cd /data/sources/ find $PWD -type f -name "Asset_*" -exec mv {} /target_dir \;
如果你想移动1000个文件,你可以用类似的东西来做
a=1 cd /data/sources/ for i in $PWD/Asset_* do mv "$i" /target_dir a=$(($a + 1)) if [ "$a" -gt 1000 ] then break fi done