Linux 编写shell脚本以将目录中最旧的文件移动到新目录。?

Linux 编写shell脚本以将目录中最旧的文件移动到新目录。?,linux,shell,unix,Linux,Shell,Unix,我不熟悉shell脚本。我正在寻找解决办法。如果我的目录中有10个文件,那么第11个文件将添加到此目录中。我只想把最旧的文件移到其他目录。我为我的目录命名了Work,为另一个目录命名了regular\u archive。我试过这个 work = /home/balaji/work regular_archieve = /home/balaji/regular_archieve cd $work for i in 'ls -t | sed -e '1,10d' | xargs -d '\n' rm

我不熟悉shell脚本。我正在寻找解决办法。如果我的目录中有10个文件,那么第11个文件将添加到此目录中。我只想把最旧的文件移到其他目录。我为我的目录命名了Work,为另一个目录命名了regular\u archive。我试过这个

work = /home/balaji/work
regular_archieve = /home/balaji/regular_archieve
cd $work
for i in 'ls -t | sed -e '1,10d' | xargs -d '\n' rm -f'
do
 mv $i $regular_archieve
done


但我无法将文件移动到其他目录。

您可以使用以下命令将最旧的文件移动到其他目录:

mv $(ls -t /home/balaji/work| tail -1) /home/balaji/regular_archieve/
ls-t
:此命令将列出目录中按修改时间排序的所有文件,最新文件排在第一位


tail-1
:它将选择最后一个文件,这将是最旧的文件。

@oguzismail我一定会读的。我也可以试着用find来做。@Pacifist这是一个文件名中的控制字符以及
--group directories first
设置的默认值都会咬到你的地方。为什么不解析
ls
的链接非常值得借鉴,但对于简单的文件名,这是我可以快速完成的方法。@NagabalajiVijayakumar你能试试
tail-n1
@NagabalajiVijayakumar可能是最后一次尝试。运行
whichtail
,然后运行脚本。就像在我的系统中一样,这个命令以
/usr/bin/tail
的形式给出输出。因此,在脚本中使用
/usr/bin/tail-1
ls -t | sed -e '1,10d' | xargs -d '\n' mv -f regular-archieve

mv $(ls -t /home/balaji/work| tail -1) /home/balaji/regular_archieve/