所以我对bash
和Stack Overflow一般很新,所以请原谅我,如果我可能遗漏了什么。
我一直在尝试创建一个脚本,将一定数量的文件(例如:3个文件)移动到另一个目录中,这些文件可能包含空格(如"hello world.txt"
)。
我尝试了几种不同的方法来获取带有空格的文件,但都证明有点困难,最后将其缩小到只使用*.csv
。例如,代码看起来像(简化):
for file in *.csv; #grab 3 files
do
echo "$file";
mv "$file" "$TDIR"
done
我只想移动一定数量的文件,比如3. $TDIR
在这种情况下是一个目标目录来移动它们。
我这样做是因为我能够抓取整个文件名"Hello World.txt"
,而不是抓取"Hello"
和"World.txt"
。
我尝试过使用不同的东西:
ls -p | grep -v / | head -3
但是它给了我上面的结果,它创建了2个文件(导致问题的空格)。
对不起它有点长,但我一直在努力解决这个问题,非常感谢任何帮助。
答案 0 :(得分:1)
最小的必要改变是使用你拥有的循环,但只是提前爆发:
((count = 3))
for file in *.csv ; do
echo "$file"
mv "$file" "$TDIR"
((count--))
[[ ${count} -eq 0 ]] && break;
done
这个解决方案唯一真正的潜在的缺点是,如果你有一个真正惊人的文件数量,它可能会失败,所以很多shell文件开始在负载下挣扎。但是,我发现它通常比尝试记住或研究能够实现相同行为的92个find
参数更容易: - )