簡體   English   中英

小寫或重命名Mac OS X上目錄中的所有文件

[英]lowercase or rename all files in a directory on Mac OS X

在花了幾個小時之后,我放棄了,並且正在尋求幫助。 這在以前的SO問題中得到了完美的回答: 如何將所有文件重命名為小寫?

麻煩的是,它在Mac OS X上不起作用。所以我開始重做它以便它可以工作。 學到一點關於強/弱引用的內容,我認為這與它有關。 就目前而言,我對所有內容都使用了強烈的引用。

 #!/bin/bash
 echo ""; echo "Start run `basename $0` on `date`";
 echo "Script running from: `pwd`";

 # Change into the directory with the files to rename
 cd /Users/me/Desktop/files
 echo "Working on files in: `pwd`"; echo "";


 # Read in all files from a directory
 for file in *; do
      lowercase_filename=`echo $file | tr '[:upper:]' '[:lower:]'`;
      echo \'$file\' \'$lowercase_filename\';

      mv \'$file\' \'$lowercase_filename\';
      echo "--------------------";

 done

以下是運行時上面腳本將輸出的內容:

 ./renamer.sh 

 Start run renamer.sh on Fri Nov 25 04:35:00 PST 2011
 Script running from: /Users/me/Desktop
 Working on files in: /Users/me/Desktop/files

 'This IS A test TEST.txt' 'this is a test test.txt'
 usage: mv [-f | -i | -n] [-v] source target
        mv [-f | -i | -n] [-v] source ... directory

出於某種原因, mv不起作用。 然而,奇怪的是,如果我接受調試輸出並手動運行它,它將正常工作。 所以我有一個前后字符串的文件名,在這種情況下,before是混合大小寫,after是小寫。 字符串以單個標記引用。 我回應它們就像我將它們作為兩個參數傳遞給mv命令一樣。

'This IS A test TEST.txt' 'this is a test test.txt'

該腳本給我一個錯誤,但如果我手動運行這些命令:

 # "l" is an alias for ls with some args to remove fot files 
 # and other junk I don't want to see.

 me@whitebook:\ $cd files
 me@whitebook:\ $l
 -rw-r--r--+  1 me  staff     0 Nov 25 03:49 This IS A test TEST.txt
 me@whitebook:\ $mv 'This IS A test TEST.txt' 'this is a test test.txt'
 me@whitebook:\ $l
 -rw-r--r--+  1 me  staff     0 Nov 25 03:49 this is a test test.txt

正如您所看到的,該文件已使用小寫重命名為“這是一個測試test.txt”。 如果我能mv用手這些,那么事情是得到它混淆腳本環境中發生的事情。 知道那可能是什么嗎?

我應該可以像其他海報一樣對此進行單行處理,但無論我嘗試什么,它都不適用於我。

謝謝你的指導。 我在Mac OS X上,這里有一些相關的系統信息......

$uname -a
Darwin whitebook.local 11.2.0 Darwin Kernel Version 11.2.0: Tue Aug  9 20:56:15 PDT 2011; root:xnu-1699.24.8~1/RELEASE_I386 i386


 $bash --version
 GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin11)
 Copyright (C) 2007 Free Software Foundation, Inc.

你能試試嗎?

mv "$file" "$lowercase_filename";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM