我有两个文件夹,为了参数清楚/ Volumes / A和/ Volumes / B.它们是从包含来自Backup Exec的.bkf文件的Windows服务器安装的网络共享。
我正在寻找一个脚本,它将查看这两个文件夹并找到最近修改过的.bkf文件并将其复制到另一个位置。文件夹中还有其他文件必须被忽略。
提前致谢!!
肖恩
编辑:
我一起敲了这个:
cp ls -alt /Volumes/E /Volumes/F| grep bkf | head -n 1 | awk '{print $8}' /Volumes/$xservedisk/Windows/
任何人都可以想到我不应该使用它的任何原因吗?
再次感谢 肖恩
答案 0 :(得分:5)
我更喜欢这个来查找最近修改过的文件:
find . -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort
答案 1 :(得分:3)
NEWEST=
for f in /Volumes/A/*.bkf /Volumes/B/*.bkf
do
if [ -z "$NEWEST" ]
then
NEWEST=$f
elif [ "$f" -nt "$NEWEST" ]
then
NEWEST=$f
fi
done
答案 2 :(得分:2)
使用以下内容查找文件:find /Volumes/[AB] -name '*.bkf'
按修改时间对文件进行排序:ls -t
如果加载文件不是那么多,您只需使用:
ls -lrt `find /Volumes/[AB] -name '*.bkf'`
最后显示的文件是最近修改的文件。
修改强>
更强大的解决方案(感谢ephemient)是:
find /Volumes/[AB] -type f -name '*.bkf' -print0 | xargs -0 ls -lrt
答案 3 :(得分:2)
经过一些曲折只是为了确保处理奇数字符的文件名,mouviciel不会:
NEWEST=$(find /Volumes/A /Volumes/B -name '*.bkf' -printf '%T@ %p\0' | \
sort -rnz | xargs -0n1 2>/dev/null | head -n1 | cut -d' ' -f2-)
[[ -n "$NEWEST" ]] && cp -v "$NEWEST" /other-location
实际上,由于这些文件来自Windows,因此几乎可以保证其名称中没有奇数字符(如嵌入式换行符),
NEWEST=$(find /Volumes/A /Volumes/B -name '*.bkf' -printf '%T@ %p\n' | \
sort -rn | head -n1 | cut -d' ' -f2-)
[[ -n "$NEWEST" ]] && cp -v "$NEWEST" /other-location
答案 4 :(得分:1)
cp `find /Volumes/[AB] -name '*bkf' -type f -printf "%A@\t%p\n" |sort -nr |head -1 |cut -f2` dst_directory/