我只在使用以下文件的文本文件中移动文件名:
cd /data/sources/
find $PWD -type f -name "Asset_*">> /data/processing/asset_files.txt
但是,我还需要:
Asset_*
个文件移动到/data/processing/
中。/data/processing/
。如何添加这两件事?
答案 0 :(得分:2)
@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
答案 1 :(得分:1)
您的路线错误,想要复制/移动1000个条目。您似乎有很多Asset_*
文件(超过1000个),并且通过将数量限制为1000,您想检查行为是否正确,然后对整个文件进行处理。
尽管这似乎是正确的,但限制为1000实在是一个负担,会使您的脚本毫无目的地变得复杂。
我会建议另一种方法:假设您有这样的文件名:
Asset_00000
Asset_00001
Asset_00002
...
Asset_00010
Asset_00011
...
Asset_99999
然后,您可能首先尝试使用Asset_0000*
来做事,然后,在确认所有内容正确之后,对所有Asset_*
文件进行处理。
就移动而言,您可以执行以下操作:
find /directory -name "Asset_0000*" -exec mv {} /target_directory \;