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

标签 linux shell unix

<分区>

我是 shell 脚本的新手。我正在为此寻求解决方案。如果我的目录中有 10 个文件,则将第 11 个文件添加到该目录中。我只想将最旧的文件移动到其他目录。我为我的目录命名为Work,为另一个目录命名为regular_archieve。这个我试过了,

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


if [ls /backup | wc -1 > 10 | mv /home/balaji/regular-archieve]
 then
   echo "more than 10 n files"
fi

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/

ls -t:此命令将列出目录中的所有文件,按修改时间排序,最新的在前。

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

关于linux - 编写 shell 脚本将目录中最旧的文件移动到新目录。?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58092619/

相关文章:

linux - awk - 如何输出 "re-awk"?

c - 接收 SIGTERM

linux - Jenkins 到 SCP 从 SVN 到 linux 服务器的几个文件夹和文件?

linux - 如何计算 awk 中输出的实例数?

c - 替代轮询功能以检查 FIFO 中的新数据

php - 支持 FPDF 中的挪威字符

Linux Bash 文件读取行和单词

linux - 为什么 SetSUID 不适用于 shell 脚本?

linux - 我想计算在 C 中调用了多少次系统调用

regex - 合并与另一个文件中的正则表达式匹配的行