for filename in $*; do mv "$filename" "${filename//.temp/}";
在特定日期的unix中重命名文件
我正在使用此腳本來重命名文件。
它從文件名中刪除.temp。我已將此文件保存爲a.sh
腳本,並將其與我要重命名的文件一起執行。但是如果我想重命名說100個文件並且只有特定日期,這會變得乏味。有沒有一種方法,我只傳遞日期的腳本作爲參數,並將其重命名該日期的文件,僅無需我來傳遞文件名
for filename in $*; do mv "$filename" "${filename//.temp/}";
在特定日期的unix中重命名文件
我正在使用此腳本來重命名文件。
它從文件名中刪除.temp。我已將此文件保存爲a.sh
腳本,並將其與我要重命名的文件一起執行。但是如果我想重命名說100個文件並且只有特定日期,這會變得乏味。有沒有一種方法,我只傳遞日期的腳本作爲參數,並將其重命名該日期的文件,僅無需我來傳遞文件名
您可以修改a.sh
這樣的:
find . -maxdepth 1 -type f -iname "*.temp" -exec bash -c 'mv $0 ${0//.temp/}' {} \;
newermt
是上次修改文件的日期。
,並可以執行它作爲
./a.sh 2017-09-27
爲了測試是否在命令行這個命令的作品,你可以試試這個腳本之外:
find . -maxdepth 1 -type f -iname "*.temp" -exec bash -c 'mv $0 ${0//.temp/}' {} \;
另一種選擇是使用-nt
測試
# create a timestamp file
timestamp_filename=/tmp/$$
touch -t 201709270000 "$timestamp_filename"
trap 'rm "$timestamp_filename"' EXIT
# then to check a file is newer
if [[ "$a_file" -nt "$timestamp_filename" ]]; then
# a_file is newer
fi
獲取此錯誤> mv:invalid option - '一個' 。我用最後一條命令來檢查 – Ritesh
現在試試,我已經將雙引號改爲單引號。 – batMan
我用這個>>>查找。 -type f -newermt 2017-10-03! -newermt 2017-10-04 -exec bash -c'mv $ 0 $ {0 //。temp /}'{} \; >>>>你的命令是重命名所有文件。糾正我,如果我錯了 – Ritesh