如何将'ls'输出文件移动到unix中的文件夹

时间:2014-08-08 10:02:46

标签: shell unix

我必须将最新修改的文​​件从文件夹移动到一个unix脚本文件中的另一个文件夹。

正在使用

cd /abc/home/ads/
mv `ls -ltr |tail -1` /abc/home/asd451/Output

2 个答案:

答案 0 :(得分:2)

它无效,因为您使用ls -l并且输出比简单文件名更复杂。

此外,不需要-r,只需使用第一行而不是最后一行:

mv "$(ls -t | head -1)" /abc/home/asd451/Output

我没有找到任何好的方法来仅列出ls的文件,所以如果您只想移动文件,这里有一个解决方案:

mv "$(ls -lt | grep '^-' | head -1 | awk '{ print $9 }')" /abc/home/asd451/Output

我使用grep仅获取文件(ls -l的输出以文件-rwxr-wr-w和目录drwxr-xr-w开头,并使用awk打印文件名


添加路径(我警告你它变脏了):

source_path=/abc/home/ads/
mv "$(ls -lt $source_path | grep '^-' | head -1 | awk '{ print "'$source_path/'"$9 }')" /abc/home/asd451/Output

答案 1 :(得分:0)

find -maxdepth 1 -printf '%T@\t%f\n' -type f | \
    sort -rn | sed 's|^[^\t]*\t||; q' | \
    xargs -n 1 -d '\n' mv -t /target/dir/

或者

...
    xargs -n 1 -d '\n' -I{} mv -- '{}' /abc/home/asd451/Output