<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://infocepo.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Categorize</id>
	<title>Categorize - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://infocepo.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Categorize"/>
	<link rel="alternate" type="text/html" href="https://infocepo.com/wiki/index.php?title=Categorize&amp;action=history"/>
	<updated>2026-04-27T04:52:56Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.13</generator>
	<entry>
		<id>https://infocepo.com/wiki/index.php?title=Categorize&amp;diff=747&amp;oldid=prev</id>
		<title>Tcepo: Created page with &quot;&lt;pre&gt; == fix type 2 == find -type f |sed -rn 's#^(.*/|)([^/]*)\.([^\./]*[a-zA-Z]{2,}[^\./]*)[\.\-]([0-9TZtz_\.\-]{4,})$#\1;\2;\3;\4#p' |while IFS=';' read dirMy fileMy typeMy...&quot;</title>
		<link rel="alternate" type="text/html" href="https://infocepo.com/wiki/index.php?title=Categorize&amp;diff=747&amp;oldid=prev"/>
		<updated>2019-10-29T13:25:15Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;pre&amp;gt; == fix type 2 == find -type f |sed -rn &amp;#039;s#^(.*/|)([^/]*)\.([^\./]*[a-zA-Z]{2,}[^\./]*)[\.\-]([0-9TZtz_\.\-]{4,})$#\1;\2;\3;\4#p&amp;#039; |while IFS=&amp;#039;;&amp;#039; read dirMy fileMy typeMy...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
== fix type 2 ==&lt;br /&gt;
find -type f |sed -rn 's#^(.*/|)([^/]*)\.([^\./]*[a-zA-Z]{2,}[^\./]*)[\.\-]([0-9TZtz_\.\-]{4,})$#\1;\2;\3;\4#p' |while IFS=';' read dirMy fileMy typeMy dateMy ;do mv -vn &amp;quot;${dirMy}${fileMy}.${typeMy}&amp;quot;?&amp;quot;${dateMy}&amp;quot; &amp;quot;${dirMy}${dateMy}-${fileMy}.${typeMy}&amp;quot; ;done&lt;br /&gt;
#== Categorize types ==&lt;br /&gt;
nbTypes=32&lt;br /&gt;
optionsMy= #update&lt;br /&gt;
find -empty -type d -delete&lt;br /&gt;
#all dirs&lt;br /&gt;
&amp;gt;/tmp/typeList$$&lt;br /&gt;
&amp;gt;/tmp/typeList$$.new&lt;br /&gt;
ls -a1 |grep -vE &amp;quot;^\.{,2}$&amp;quot; |while read lineMy ;do&lt;br /&gt;
  if [ -d &amp;quot;${lineMy}&amp;quot; ] ;then&lt;br /&gt;
#    echo &amp;quot;${lineMy}&amp;quot; ;done |while read lineMy ;do&lt;br /&gt;
    #check if type dir&lt;br /&gt;
    MyPatern='^.*\.([a-z0-9A-Z_]+)$'&lt;br /&gt;
    typeName=&amp;quot;$(find &amp;quot;${lineMy}&amp;quot; -type f |head -1 |sed -rn &amp;quot;s#$MyPatern#\1#p&amp;quot;)&amp;quot;&lt;br /&gt;
    if [ &amp;quot;${typeName}&amp;quot; == &amp;quot;${lineMy}&amp;quot; ] ;then&lt;br /&gt;
      echo &amp;quot;${typeName}&amp;quot; &amp;gt;&amp;gt;/tmp/typeList$$&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;${lineMy}&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;${lineMy}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done &amp;gt;/tmp/categorize$$.statNewTypes&lt;br /&gt;
[ &amp;quot;${optionsMy}&amp;quot; != &amp;quot;update&amp;quot; ] &amp;amp;&amp;amp;cat /tmp/categorize$$.statNewTypes |while read dirName2 ;do&lt;br /&gt;
    find &amp;quot;$dirName2&amp;quot; -type f |head -${nbTypes}&lt;br /&gt;
  done |head -1024 |while read MyFile ;do&lt;br /&gt;
    MyPatern='^.*[^/]+\.([a-z0-9A-Z]+)$'&lt;br /&gt;
    echo &amp;quot;$MyFile&amp;quot; |sed -rn &amp;quot;s#$MyPatern#\1#p&amp;quot; |head -1&lt;br /&gt;
#  done |sort |uniq -c |sort -gr |head -${nbTypes} |awk '{if ( $1 &amp;gt; 4 ) {$1=&amp;quot;&amp;quot; ;print }}' |cut -c-1 --complement &amp;gt;&amp;gt;/tmp/typeList$$.new&lt;br /&gt;
  done |sort |uniq -c |sort -gr |head -${nbTypes} |awk '{$1=&amp;quot;&amp;quot; ;print }' |cut -c-1 --complement &amp;gt;&amp;gt;/tmp/typeList$$.new&lt;br /&gt;
(cat /tmp/typeList$$ ;cat /tmp/typeList$$.new) |sort -u &amp;gt;/tmp/typeList$$2&lt;br /&gt;
mv -f /tmp/typeList$$2 /tmp/typeList$$&lt;br /&gt;
cat /tmp/typeList$$.new |while read MyType ;do&lt;br /&gt;
  mkdir &amp;quot;${MyType}&amp;quot; 2&amp;gt;/dev/null &amp;amp;&amp;amp;chown noname &amp;quot;${MyType}&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
ls -a1 |grep -vE &amp;quot;^\.{,2}$&amp;quot; |grep -vw -f /tmp/typeList$$ &amp;gt;/tmp/dirList$$&lt;br /&gt;
cat /tmp/dirList$$ |while read lineMy ;do&lt;br /&gt;
  find &amp;quot;${lineMy}&amp;quot; -type f&lt;br /&gt;
done |while read MyFile ;do&lt;br /&gt;
  typeName=$(echo &amp;quot;${MyFile}&amp;quot; |sed -rn 's#^(.*)\.([^\.]*)|([^\.]+)$#\2#p')&lt;br /&gt;
  echo &amp;quot;${typeName}&amp;quot; |grep -E ^- ||(&lt;br /&gt;
  if [ ! -z &amp;quot;$(grep -x &amp;quot;${typeName}&amp;quot; /tmp/typeList$$)&amp;quot; ] ;then&lt;br /&gt;
    dirName=&amp;quot;$(dirname &amp;quot;${MyFile}&amp;quot; )&amp;quot;&lt;br /&gt;
    mkdir -p &amp;quot;${typeName}/${dirName}&amp;quot; ||echo &amp;quot;${typeName}/${dirName}&amp;quot;&lt;br /&gt;
    chown --reference=&amp;quot;${dirName}&amp;quot; &amp;quot;${typeName}/${dirName}&amp;quot;&lt;br /&gt;
    chmod --reference=&amp;quot;${dirName}&amp;quot; &amp;quot;${typeName}/${dirName}&amp;quot;&lt;br /&gt;
    mv -vn &amp;quot;${MyFile}&amp;quot; &amp;quot;${typeName}/${MyFile}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  )&lt;br /&gt;
done&lt;br /&gt;
find -type d -exec chown noname {} \;&lt;br /&gt;
&lt;br /&gt;
== dir fix duplicate words ==&lt;br /&gt;
#directories&lt;br /&gt;
detox -r ./* ./\.[^\.]* ./\.\.?*&lt;br /&gt;
~/sh/caseFix.sh&lt;br /&gt;
find -xdev -empty -type d -delete&lt;br /&gt;
~/sh/remove-duplicate-words-dir.sh&lt;br /&gt;
&lt;br /&gt;
#=== Rename orphans files ===&lt;br /&gt;
~/sh/caseFix.sh&lt;br /&gt;
find -xdev -type l -delete&lt;br /&gt;
find -xdev -empty -delete&lt;br /&gt;
~/sh/rename-orphans-files.sh&lt;br /&gt;
find -xdev -empty -delete&lt;br /&gt;
find -xdev -type d -exec chown noname {} \;&lt;br /&gt;
&lt;br /&gt;
== metadata fix duplicate words ==&lt;br /&gt;
#directories&lt;br /&gt;
detox -r ./* ./\.[^\.]* ./\.\.?*&lt;br /&gt;
~/sh/caseFix.sh&lt;br /&gt;
find -xdev -empty -type d -delete&lt;br /&gt;
~/sh/remove-duplicate-words-dir.sh&lt;br /&gt;
&lt;br /&gt;
#files&lt;br /&gt;
find ./* ./\.[^\.]* ./\.\.?* -xdev -type f |while read My ;do&lt;br /&gt;
  oldName=$(basename &amp;quot;${My}&amp;quot; |sed -rn 's#^(.*)\.([^\.]*)|([^\.]+)$#\1\3#p')&lt;br /&gt;
  typeName=$(basename &amp;quot;${My}&amp;quot; |sed -rn 's#^(.*)\.([^\.]*)|([^\.]+)$#\2#p')&lt;br /&gt;
&lt;br /&gt;
  dirName=&amp;quot;$(dirname &amp;quot;$My&amp;quot;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # remove word from dir&lt;br /&gt;
  #echo &amp;quot;${oldName}&amp;quot; |tr '_, ' '-' &amp;gt;/tmp/newName$$&lt;br /&gt;
  echo &amp;quot;${oldName}&amp;quot; |tr '_, ' '-' &amp;gt;/tmp/newName$$&lt;br /&gt;
  (echo &amp;quot;${dirName}&amp;quot; |sed -r &amp;quot;s#[^[:alnum:]]#\n#gI&amp;quot; ;echo &amp;quot;${typeName}&amp;quot; )|grep . |sort -u |while read My2 ;do&lt;br /&gt;
    cat /tmp/newName$$ |sed -r &amp;quot;s#\b${My2}\b[^[:alnum:]]*##gI&amp;quot; &amp;gt;/tmp/newName$$2&lt;br /&gt;
    mv -f /tmp/newName$$2 /tmp/newName$$&lt;br /&gt;
  done&lt;br /&gt;
&lt;br /&gt;
  #reverse&lt;br /&gt;
  cat /tmp/newName$$ |rev &amp;gt;/tmp/newName$$2&lt;br /&gt;
  mv -f /tmp/newName$$2 /tmp/newName$$&lt;br /&gt;
  # remove duplicates&lt;br /&gt;
  countMy=32&lt;br /&gt;
  while [ ! -z &amp;quot;$(cat /tmp/newName$$ |sed -r &amp;quot;s#[^[:alnum:]]#\n#gI&amp;quot; |tr '[:upper:]' '[:lower:]' |grep . |sort |uniq -c |awk '{if ($1&amp;gt;1) print $2}' |tee /tmp/duplicatesWords$$)&amp;quot; ] ;do&lt;br /&gt;
    cat /tmp/duplicatesWords$$ |while read My2 ;do&lt;br /&gt;
      cat /tmp/newName$$ |sed -r &amp;quot;s#[^[:alnum:]]*\b${My2}\b##I&amp;quot; &amp;gt;/tmp/newName$$2&lt;br /&gt;
      mv -f /tmp/newName$$2 /tmp/newName$$&lt;br /&gt;
    done&lt;br /&gt;
    countMy=$((countMy-1)) &amp;amp;&amp;amp; [ $countMy -le 0 ] &amp;amp;&amp;amp;break&lt;br /&gt;
  done&lt;br /&gt;
&lt;br /&gt;
  #newName=$(cat /tmp/newName$$ |rev |sed -r 's#\.+#\.#g' |sed -r 's#\-+#-#g' |sed -r 's#\.\-#-#g' |sed -r 's#\-\.#-#g' |sed -r 's#\-+$##' |sed -r 's#\.+$##' |sed -r 's#^\-+##' |sed -r 's#^\.+##')&lt;br /&gt;
  newName=$(cat /tmp/newName$$ |rev |sed -r 's#[-\.]+$##' |sed -r 's#^[-\.]+##' |sed -r 's#[-\.]{2,}#-#g')&lt;br /&gt;
  newType=&amp;quot;${typeName}&amp;quot;&lt;br /&gt;
  if [ ! -z &amp;quot;${typeName}&amp;quot; ] ;then&lt;br /&gt;
    typeName=&amp;quot;.${typeName}&amp;quot;&lt;br /&gt;
    newType=&amp;quot;$(echo $typeName |tr '[:upper:]' '[:lower:]')&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  [ &amp;quot;${oldName}${typeName}&amp;quot; != &amp;quot;${newName}${newType}&amp;quot; ] &amp;amp;&amp;amp;mv -vn &amp;quot;${dirName}/${oldName}${typeName}&amp;quot; &amp;quot;${dirName}/${newName}${newType}&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== classificate by small word ==&lt;br /&gt;
word1=Luc&lt;br /&gt;
[ ! -d &amp;quot;${word1}&amp;quot; ] &amp;amp;&amp;amp;mkdir &amp;quot;${word1}&amp;quot; &amp;amp;&amp;amp;chown noname &amp;quot;${word1}&amp;quot;&lt;br /&gt;
find -type d -iname &amp;quot;*${word1}*&amp;quot; |grep -vE &amp;quot;^\.{,2}$&amp;quot; |grep -vE &amp;quot;^\./${word1}$&amp;quot; |grep -iE '\b'&amp;quot;${word1}&amp;quot;'\b' |while read lineMy ;do&lt;br /&gt;
  echo &amp;quot;== ${lineMy} ==&amp;quot;&lt;br /&gt;
  newPath=&amp;quot;${word1}/$(echo ${lineMy} |sed -r 's#\b'&amp;quot;${word1}&amp;quot;'\b##gI')&amp;quot;&lt;br /&gt;
  newDir=&amp;quot;$(dirname &amp;quot;${newPath}&amp;quot;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  if [ -d &amp;quot;${newPath}&amp;quot; ] ;then&lt;br /&gt;
    mv -vn &amp;quot;${lineMy}&amp;quot;/* &amp;quot;${lineMy}&amp;quot;/\.[^\.]* &amp;quot;${lineMy}&amp;quot;/\.\.?* &amp;quot;${newPath}&amp;quot;/.&lt;br /&gt;
    rmdir &amp;quot;${lineMy}&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    [ ! -d &amp;quot;${newDir}&amp;quot; ] &amp;amp;&amp;amp;mkdir -p &amp;quot;${newDir}&amp;quot; &amp;amp;&amp;amp;chown noname &amp;quot;${newDir}&amp;quot;&lt;br /&gt;
    mv -vn &amp;quot;${lineMy}&amp;quot; &amp;quot;${newPath}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
find -type f -iname &amp;quot;*${word1}*&amp;quot; |grep -vE &amp;quot;^\./${word1}/&amp;quot; |grep -iE '\b'&amp;quot;${word1}&amp;quot;'\b' |while read lineMy ;do&lt;br /&gt;
  echo &amp;quot;== ${lineMy} ==&amp;quot;&lt;br /&gt;
  newPath=&amp;quot;${word1}/$(echo ${lineMy} |sed -r 's#\b'&amp;quot;${word1}&amp;quot;'\b##gI')&amp;quot;&lt;br /&gt;
  newDir=&amp;quot;$(dirname &amp;quot;${newPath}&amp;quot;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  if [ ! -f &amp;quot;${newPath}&amp;quot; ] ;then&lt;br /&gt;
    [ ! -d &amp;quot;${newDir}&amp;quot; ] &amp;amp;&amp;amp;mkdir -p &amp;quot;${newDir}&amp;quot; &amp;amp;&amp;amp;chown noname &amp;quot;${newDir}&amp;quot;&lt;br /&gt;
    mv -vn &amp;quot;${lineMy}&amp;quot; &amp;quot;${newPath}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
find -empty -type d -delete&lt;br /&gt;
find &amp;quot;${word1}&amp;quot; -type d -exec chown noname {} \;&lt;br /&gt;
&lt;br /&gt;
== classificate by word (5 or more letters) ==&lt;br /&gt;
word1=archive&lt;br /&gt;
[ ! -d &amp;quot;${word1}&amp;quot; ] &amp;amp;&amp;amp;mkdir &amp;quot;${word1}&amp;quot; &amp;amp;&amp;amp;chown noname &amp;quot;${word1}&amp;quot;&lt;br /&gt;
find -xdev -type d -iname &amp;quot;*${word1}*&amp;quot; |grep -vE &amp;quot;^\.{,2}$&amp;quot; |grep -vE &amp;quot;^\./${word1}$&amp;quot; |while read lineMy ;do&lt;br /&gt;
  echo &amp;quot;== ${lineMy} ==&amp;quot;&lt;br /&gt;
  newPath=&amp;quot;${word1}/$(echo ${lineMy} |sed 's#'&amp;quot;${word1}&amp;quot;'##gI')&amp;quot;&lt;br /&gt;
  newDir=&amp;quot;$(dirname &amp;quot;${newPath}&amp;quot;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  if [ -d &amp;quot;${newPath}&amp;quot; ] ;then&lt;br /&gt;
    mv -vn &amp;quot;${lineMy}&amp;quot;/* &amp;quot;${lineMy}&amp;quot;/\.[^\.]* &amp;quot;${lineMy}&amp;quot;/\.\.?* &amp;quot;${newPath}&amp;quot;/.&lt;br /&gt;
    rmdir &amp;quot;${lineMy}&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    [ ! -d &amp;quot;${newDir}&amp;quot; ] &amp;amp;&amp;amp;mkdir -p &amp;quot;${newDir}&amp;quot; &amp;amp;&amp;amp;chown noname &amp;quot;${newDir}&amp;quot;&lt;br /&gt;
    mv -vn &amp;quot;${lineMy}&amp;quot; &amp;quot;${newPath}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
find -xdev -type f -iname &amp;quot;*${word1}*&amp;quot; |grep -vE &amp;quot;^\.{,2}$&amp;quot; |grep -vE &amp;quot;^\./${word1}/&amp;quot; |while read lineMy ;do&lt;br /&gt;
  echo &amp;quot;== ${lineMy} ==&amp;quot;&lt;br /&gt;
  newPath=&amp;quot;${word1}/$(echo ${lineMy} |sed 's#'&amp;quot;${word1}&amp;quot;'##gI')&amp;quot;&lt;br /&gt;
  newDir=&amp;quot;$(dirname &amp;quot;${newPath}&amp;quot;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  if [ ! -f &amp;quot;${newPath}&amp;quot; ] ;then&lt;br /&gt;
    [ ! -d &amp;quot;${newDir}&amp;quot; ] &amp;amp;&amp;amp;mkdir -p &amp;quot;${newDir}&amp;quot; &amp;amp;&amp;amp;chown noname &amp;quot;${newDir}&amp;quot;&lt;br /&gt;
    mv -vn &amp;quot;${lineMy}&amp;quot; &amp;quot;${newPath}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
find -xdev -empty -type d -delete&lt;br /&gt;
find &amp;quot;${word1}&amp;quot; -type d -exec chown noname {} \;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tcepo</name></author>
	</entry>
</feed>