Linux 编写shell脚本以将目录中最旧的文件移动到新目录。?
我不熟悉shell脚本。我正在寻找解决办法。如果我的目录中有10个文件,那么第11个文件将添加到此目录中。我只想把最旧的文件移到其他目录。我为我的目录命名了Work,为另一个目录命名了regular\u archive。我试过这个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
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/