我有一個子目錄和名稱以類似於子目錄的字符串開頭的文件的目錄;例如在腳本中將文件移動到具有相似名稱的目錄
bar/
foo-1/ (dir)
foo-1-001.txt
foo-1-002.txt
foo-1-003.txt
foo-2/ (dir)
foo-2-001.txt
foo-2-002.txt
foo-2-003.txt
foo-3/ (dir)
foo-3-001.txt
foo-3-002.txt
foo-3-003.txt
等
所有文件目前正處於同一水平。我想用腳本將相應的.txt文件移動到它們類似名稱的目錄中(在我目前的情況下,大於9500)。
我寫了以下內容,但我錯過了一些內容,因爲我無法移動文件。
#!/bin/sh
# directory basename processing for derivatives
# create directory list in a text file
find ./ -type d > directoryList.txt
# setup while loop for moving text files around
FILE="directoryList.txt"
exec 3<&0
exec 0<$FILE
while read line
do
echo "This is a directory:`basename $line`"
filemoves=`find ./ -type f -name '*.txt' \! -name 'directoryList.txt' | sed 's|-[0-9]\{3\}\.txt$||g'`
if [ "`basename $filemoves`" == "$line" ]
then
cp $filemoves $line/
echo "copied $filemoves to $line"
fi
done
exec 0<&3
事情似乎工作正常,直到我得到if
。我正在處理大量的* nix,所以我必須小心我所用的參數(RHEL,FreeBSD,也可能是Mac OS X)。
+1使用參數擴展。我會給你+2,如果我可以也不使用'ls' – SiegeX 2012-02-07 03:41:05
Ry4an - 非常感謝。 – CanOfBees 2012-02-07 12:34:16
嘿,謝謝@SiegeX。我喜歡花哨的bash參數擴展的東西,並且我花了10年的時間來找到我可以使用它們的地方,而不用去查看它們(很多)。 – 2012-02-07 14:20:12