如何触摸排序的 ls 返回的所有文件?
How to touch all files that are returned by a sorted ls?
如果我有以下情况:
ls|sort -n
我如何按照排序文件的顺序触摸所有这些文件?类似于:
ls|sort -n|touch
正确的语法是什么?请注意,我需要按照文件的排序顺序对文件进行排序——因为我正在尝试将这些文件排序为 FAT reader,同时读取最少的元数据。
你可以使用这个命令
(ls|sort -n >> list.txt )
touch $(cat list.txt)
或
touch $(ls /path/to/dir | sort -n)
或者如果您想复制文件而不是创建空文件,请使用此命令
cp list.txt ./DirectoryWhereYouWantToCopy
能给几个文件名吗?
如果您的文件名的编号为 1file、10file、11file .. 20file,那么您需要使用 --general-numeric-sort
ls | sort --general-numeric-sort --output=../workingDirectory/sortedFiles.txt
cat sortedFiles.txt
1file
10file
11file
12file
20file
并移动 sortedFile.txt 到您的工作目录或任何您想要的地方。
touch $(cat ../workingDirectory/sortedFiles.txt)
这将创建具有完全相同名称的空文件
这样试试
touch $(ls | sort -n)
ls -1tr | while read file; do touch "$file"; sleep 1; done
如果您想保留从一个文件到下一个文件的修改时间距离,请改为调用此方法:
upmodstamps() {
oldest_elapsed=$(( $(date +%s) - $(stat -c %Y "`ls -1tr|head -1`") ))
for file in *; do
oldstamp=$(stat -c %Y "$file")
newstamp=$(( $oldstamp + $oldest_elapsed ))
newstamp_fmt=$(date --date=@${newstamp} +'%Y%m%d%H%M.%S')
touch -t ${newstamp_fmt} "$file"
done
}
注意:date
用法假定 GNU
如果我有以下情况:
ls|sort -n
我如何按照排序文件的顺序触摸所有这些文件?类似于:
ls|sort -n|touch
正确的语法是什么?请注意,我需要按照文件的排序顺序对文件进行排序——因为我正在尝试将这些文件排序为 FAT reader,同时读取最少的元数据。
你可以使用这个命令
(ls|sort -n >> list.txt )
touch $(cat list.txt)
或
touch $(ls /path/to/dir | sort -n)
或者如果您想复制文件而不是创建空文件,请使用此命令
cp list.txt ./DirectoryWhereYouWantToCopy
能给几个文件名吗?
如果您的文件名的编号为 1file、10file、11file .. 20file,那么您需要使用 --general-numeric-sort
ls | sort --general-numeric-sort --output=../workingDirectory/sortedFiles.txt
cat sortedFiles.txt
1file
10file
11file
12file
20file
并移动 sortedFile.txt 到您的工作目录或任何您想要的地方。
touch $(cat ../workingDirectory/sortedFiles.txt)
这将创建具有完全相同名称的空文件
这样试试
touch $(ls | sort -n)
ls -1tr | while read file; do touch "$file"; sleep 1; done
如果您想保留从一个文件到下一个文件的修改时间距离,请改为调用此方法:
upmodstamps() {
oldest_elapsed=$(( $(date +%s) - $(stat -c %Y "`ls -1tr|head -1`") ))
for file in *; do
oldstamp=$(stat -c %Y "$file")
newstamp=$(( $oldstamp + $oldest_elapsed ))
newstamp_fmt=$(date --date=@${newstamp} +'%Y%m%d%H%M.%S')
touch -t ${newstamp_fmt} "$file"
done
}
注意:date
用法假定 GNU